KR20010013191A - 하드웨어 논리 에뮬레이션 시스템에서 사용되는 분포 논리분석기 - Google Patents

하드웨어 논리 에뮬레이션 시스템에서 사용되는 분포 논리분석기 Download PDF

Info

Publication number
KR20010013191A
KR20010013191A KR19997011176A KR19997011176A KR20010013191A KR 20010013191 A KR20010013191 A KR 20010013191A KR 19997011176 A KR19997011176 A KR 19997011176A KR 19997011176 A KR19997011176 A KR 19997011176A KR 20010013191 A KR20010013191 A KR 20010013191A
Authority
KR
South Korea
Prior art keywords
logic
signal
chip
chips
board
Prior art date
Application number
KR19997011176A
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=25345974&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR20010013191(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 퀵턴 디자인 시스템즈, 인크. filed Critical 퀵턴 디자인 시스템즈, 인크.
Publication of KR20010013191A publication Critical patent/KR20010013191A/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
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/25Testing of logic operation, e.g. by logic analysers
    • 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
    • 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/3181Functional testing
    • G01R31/3185Reconfiguring for testing, e.g. LSSD, partitioning

Landscapes

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

Abstract

다수의 설계 신호를 물리적인 논리칩 핀과 인쇄 회로 보드로 시간-멀티플렉싱함으로서 하드웨어 비용을 줄인 하드웨어 에뮬레이션 시스템 (hardware emulation system)이 설명된다. 본 발명의 재구성가능한 논리 시스템은 다수의 재프로그램가능한 논리 디바이스와, 다수의 재프로그램가능한 상호연결 디바이스를 포함한다. 논리 디바이스와 상호연결 디바이스는 다수의 설계 신호가 공통된 I/O 핀과 회로 보드 트레이스 (trace)를 공유하도록 함께 상호연결된다. 또한, 하드웨어 에뮬레이션 시스템을 위한 논리 분석기가 설명된다. 논리 분석기 기능을 실행하는데 필요한 논리 회로는 에뮬레이션 시스템의 논리칩에서 프로그램가능한 자원으로 프로그램된다.

Description

하드웨어 논리 에뮬레이션 시스템에서 사용되는 분포 논리 분석기 {DISTRIBUTED LOGIC ANALYZER FOR USE IN A HARDWARE LOGIC EMULATION SYSTEM}
하드웨어 에뮬레이션 시스템은 칩이나 인쇄 회로 보드로 제작되기 이전에 전자 회로 설계를 검증하도록 설계된 디바이스이다. 이러한 시스템은 전형적으로 프로그램가능한 논리칩 (logic chip) 및 프로그램가능한 상호연결칩 (interconnect chip)으로부터 설립된다. 여기서 사용되는 "칩 (chip)"이란 말은 집적 회로를 말한다. 논리칩의 예는 FPGA (field-programmable gate array)와 같은 재프로그램가능한 논리 회로를 포함하고, 이는 기성품과 주문품을 모두 포함한다. 상호연결칩의 예는 재프로그램가능한 FPGA, 멀티플렉서 칩, 교점 스위치 칩 등을 포함한다. 상호연결칩은 기성품이나 설계 주문품일 수 있다.
종래 기술의 에뮬레이션 시스템은 일반적으로 에뮬레이트 (emulate)되는 전자 회로 설계내의 각 신호가 논리칩내에서 하나 이상의 물리적 금속선 ("와이어 (wire)")에 맵핑 (mapping)되도록 설계되었다. 논리칩 사이를 지나야 하는 신호는 논리칩에서 하나 이상의 물리적 핀 (pin)에 맵핑되고, 논리칩 및 상호연결칩을 포함하는 인쇄 회로 보드에서는 하나 이상의 물리적 트레이스 (trace)에 맵핑된다.
종래 기술의 에뮬레이션 시스템에서 물리적 핀과 트레이스에 설계 신호를 일 대 일로 맵핑하는 경우에는 논리칩 사이에 전해지는 설계 신호가 있을 때 에뮬레이션 시스템이 적어도 논리칩의 핀과 인쇄 회로 보드의 트레이스 수 만큼 포함될 것이 요구된다. 이러한 배열은 에뮬레이션 시스템을 구성하는데 있어서 매우 복잡하고 값비싼 집적 회로 패키지, 인쇄 회로 보드, 및 회로 보드 커넥터의 사용을 요구한다. 실질적으로 하드웨어 논리 에뮬레이션 시스템의 비용을 증가시키게 되는 이러한 구성성분의 높은 비용은 제공할 수 있는 설계자의 수를 제한하는 요소가 되므로, 하드웨어 에뮬레이션 시스템에 의해 제공되는 이점 및 이득을 제한시키게 된다.
더욱이, 집적 회로 제작 기술은 점차 감소되는 크기를 사용하도록 허용한다. 그래서, 논리칩의 논리 밀도 (즉, 그안에서 실시될 수 있는 논리 게이트의 수)가 매우 증가되었다. 그러나, 단일 논리칩에서 실시되거나 에뮬레이트될 수 있는 논리 게이트수의 증가는 칩의 패키지상의 입력, 출력, 클럭 등에 이용가능한 핀수의 증가와 일치되지 않는다. 집적 회로 패키지상의 핀수는 이용가능한 칩의 주변길이에 의해 제한된다. 더욱이, 집적 회로판상의 결합 패드 (pad)를 패키지상의 핀에 연결시키는데 사용되는 와이어-결합 어셈블리 장비의 기능은 오랜 시간에 걸쳐 천천히 증가되었다. 그래서, 논리칩을 외부측과 연결시키는데 사용되는 핀의 수와 논리칩상에서 이용가능한 논리량 사이에는 부정합이 증가된다. 그 결과로, 논리칩의 논리 용량의 평균 사용도가 나빠져, 소정의 크기의 전자 회로 설계의 에뮬레이션에 필요한 하드웨어 에뮬레이션 시스템의 비용을 증가시키게 된다.
시간-멀티플렉싱 (time-multiplexing)은 각각의 물리적 연결 비용이 매우 높은 특정한 종류의 시스템에서 다수의 논리 신호 사이에 하나의 물리적 와이어나 핀을 공유하는데 사용되는 기술이다. 이러한 시스템은 전기통신 시스템을 포함한다. 그러나, 시간-멀티플렉싱은 종래 시간-멀티플렉싱 방법의 사용이 에뮬레이트되는 회로가 동작될 수 있는 속도를 상당히 감소시키기 때문에 Quickturn Design Systems, Inc., Mentor Graphics Corporation, Aptix Corporation 등으로부터 이용가능한 것과 같은 하드웨어 에뮬레이션 시스템에서 일반적으로 사용되지 않는다. 더욱이, 종래 time-multiplexing 기술은 하드웨어 에뮬레이션 시스템에서 삽입된 설계의 정확한 비동기화 동작을 보존하기 어렵게 만든다.
논의된 바와 같이, 하드웨어 에뮬레이션 시스템의 한 기능은 집적 회로의 기능성을 검증하는 것이다. 전형적으로, 회로 설계자나 엔지니어가 집적 회로를 설계할 때, 설계는 설계의 "네트리스트 (netlist)" 설명의 형태로 나타내진다. 네트리스트 설명 (또는 종래 기술에 숙련된 자에 의해 칭하여지는 바와 같이 "네트리스트")은 집적 회로의 구성성분과 구성성분 사이의 전기적 상호연결을 설명하는 것이다. 구성성분은 조합논리 (예를 들면, 게이트) 및 시퀀스 (sequence) 논리 (예를 들면, 플립플롭 (flip-flop)과 래치 (latch))와 같은 논리 회로를 실시하는데 필요한 모든 회로 소자를 포함한다. 종래 기술의 에뮬레이션 시스템은 네트리스트를 하드웨어 에뮬레이션 시스템으로 실시하기 이전에 사용자의 회로 네트리스트를 분석하였다. 이 분석은 설계의 다양한 회로 경로를 클럭 경로, 클럭 한정기 (clock qualifier), 및 데이터 경로로 분리하는 단계를 포함한다. 이러한 분석과 분리를 실행하는 방법은 본 발명과 같은 양수인에게 부여된 Chen의 미국 특허 No. 5,475,830에서 설명된다. 미국 특허 No. 5,475,830의 내용은 여기서 전체적으로 참고로 포함된다. 미국 특허 No. 5,475,830에서 설명된 기술은 Quickturn Design Systems, Inc., Mountain View, California로부터 이용가능한 System RealizerTM브랜드 하드웨어 에뮬레이션 시스템과 같은 종래 기술의 에뮬레이션 시스템에서 사용된다. 그러나, 거기서 설명된 기술은 시간-멀티플렉싱 종류와 조합되어 사용되지 않는다.
Virtual Machine Works (지금은 IKOS), ARKOS (지금은 Synopsis), IBM으로부터 이용가능한 것과 같은 다른 종래의 하드웨어 에뮬레이션 시스템은 에뮬레이트되는 소정의 크기의 전자 설계에 대해 더 낮은 하드웨어 비용을 찾기 위해 하나의 물리적 논리칩 핀 및 인쇄 회로 보드 트레이스에 설계 신호의 시간-멀티플렉싱을 사용하도록 의도되었다. 그러나, 이들 종래 기술의 에뮬레이션 시스템은 정확한 회로 동작을 유지하려는 의도로 클럭 경로를 변경 또는 재합성한다. 이러한 변경 또는 재합성 처리는 동기화 설계에 대해 예측가능하게 작동한다. 그러나, 비동기화 설계에서 클럭 경로를 변경 또는 재합성하는 것은 부정확하거나 잘못된 에뮬레이션 결과를 초래할 수 있다. 대부분의 회로 설계가 비동기화 클럭 설계를 가지므로, 클럭 경로를 변경 또는 재합성할 필요가 있는 것은 많이 불편한 점이다.
부가하여, 시간-멀티플렉싱을 사용하는 종래 기술의 하드웨어 에뮬레이션 기계는 낮은 동작 속도를 갖게 된다. 이는 클럭 경로를 재합성하는 결과이다. 이러한 기계에서는 한 클럭 싸이클의 설계를 에뮬레이트하는데 다수의 내부 기계 싸이클이 요구된다. 그래서, 에뮬레이트되는 설계에 대한 실효 동작 속도는 전형적으로 에뮬레이션 시스템 자체의 최대 클럭 비율 보다 몇배 더 느리다. 에뮬레이트되는 설계에 다수의 비동기화 클럭이 있으면, 입력 클럭 엣지의 각 쌍 사이에서 에뮬레이트되는 설계의 상태가 평가될 필요가 있기 때문에 전형적으로 더 느려지게 된다.
시간-멀티플렉싱을 사용하는 종래 기술의 하드웨어 에뮬레이션 기계는 또한 하나의 물리적 논리칩의 핀과 인쇄 회로 보드 트레이스에 걸쳐 다수의 설계 신호의 흐름을 동기화하기 위해 복잡한 소프트웨어를 요구한다. 각 설계 신호는 다른 설계 신호를 계산하는 시스템의 다른 부분에서 필요로 하는 순간에 정확한 값을 갖도록 시간이 조정되어야 한다. 이 타이밍 분석 소프트웨어 (스케쥴링 소프트웨어 (scheduling software)라고도 공지된)는 에뮬레이터의 복잡성을 더 하게 만들고 회로 설계를 에뮬레이터에 컴파일 (compile)하는데 필요한 시간을 더 길게 만든다.
더욱이, 시간-멀티플렉싱을 사용하는 종래 기술의 하드웨어 에뮬레이션 기계는 최소 하드웨어를 요구하지만 많은 양의 전력 (예를 들면, 전류)를 사용하고 복잡한 시스템 설계를 요구하는 시간-멀티플렉싱의 단순한 형태만을 사용한다.
그러므로, 매우 높은 논리적 용량, 신속한 컴파일 시간, 덜 복잡한 소프트웨어, 간략화된 기계적인 설계, 및 감소된 전력 소모를 갖는 하드웨어 에뮬레이션 시스템이 필요하다.
발명의 요약
물리적 논리칩의 핀과 인쇄 회로 보드 트레이스에 다수의 설계 신호를 시간-멀티플렉싱 (time-multiplexing)하여 하드웨어 비용을 줄이지만 낮은 동작 속도 및 열악한 비동기화 실행도에 대한 제한을 갖지 않는 새로운 종류의 하드웨어 에뮬레이션 시스템 (hardware emulation system)이 설명되고 청구된다.
바람직한 실시예에서, 시간-멀티플렉싱은 설계에서 클럭 한정기 (clock qualifier) 경로 (클럭 한정기는 클럭 신호를 게이트 처리하는데 사용되는 신호이다)와 데이터 경로에 사용되지만, 클럭 경로 (클럭 경로는 클럭 신호가 유도된 클럭 소스와 클럭 신호 사이의 경로이다)에는 사용되지 않는다.
본 발명의 재구성가능한 논리 시스템은 다수의 프로그램가능한 논리 디바이스를 포함하고, 이들 각각은 적어도 조합 논리 소자 및 저장 소자를 제공하도록 재프로그램가능하게 구성될 수 있는 내부 회로를 갖는다. 프로그램가능한 논리 디바이스는 또한 논리 디바이스의 기능 소자 중 선택된 것에 프로그램가능하게 상호연결될 수 있는 프로그램가능한 입력/출력 단자를 갖는다. 프로그램가능한 논리 디바이스는 각 입력/출력 단자에 주어지는 입력 디멀티플렉서 및 출력 멀티플렉서를 갖는다. 입력 디멀티플렉서는 시간-멀티플렉싱된 신호를 수신하여 이를 하나 이상의 내부 신호로 분할한다. 출력 멀티플렉서는 하나 이상의 내부 신호를 단일 물리적 상호연결로 조합한다.
본 발명은 또한 다수의 재프로그램가능한 상호연결 디바이스를 포함하고, 이들 각각은 입력/출력 단자와, 선택된 입력/출력 단자 사이의 상호연결을 제공하도록 프로그램가능하게 구성될 수 있는 내부 회로를 갖는다. 재프로그램가능한 상호연결 디바이스는 또한 각 입력/출력 단자에서 실시되는 입력 디멀티플렉서 및 출력 멀티플렉서를 갖는다. 입력 디멀티플렉서는 시간-멀티플렉싱된 입력 신호를 수신하여 이를 하나 이상의 구성성분 신호로 분할한다. 출력 멀티플렉서는 하나 이상의 구성성분 신호를 제2의 단일 물리적 상호연결로 조합한다.
본 발명은 또한 재프로그램가능한 논리 디바이스상의 프로그램가능한 입력/출력 단자를 재프로그램가능한 상호연결 디바이스상의 입력/출력 단자에 연결시키는 고정된 전기 도체의 세트를 포함한다.
본 발명의 또 다른 특성으로, 논리 분석기는 논리 에뮬레이션 시스템으로 집적되어 설계에 대해 진행중인 에뮬레이션의 상태를 완전하게 볼 수 있게 된다. 본 발명의 논리 분석기는 구성성분이 에뮬레이션 시스템의 다수의 자원에 집적되도록 분포된다. 본 발명의 논리 분석기는 적어도 논리 보드의 논리칩 각각에 프로그램되는 주사 체인 (scan chain)을 구비한다. 주사 체인은 적어도 하나의 플립플롭으로 구성된다. 주사 체인은 에뮬레이션이 진행중인 설계의 순차 논리 소자 중 선택된 서브세트에 프로그램가능하게 연결될 수 있다.
논리 분석기는 또한 주사 체인과 통신하는 적어도 하나의 메모리 디바이스를 포함한다. 이 메모리 디바이스는 에뮬레이션이 진행중인 논리 설계의 순차 논리 소자로부터의 데이터를 저장한다. 제어 회로는 에뮬레이션 시스템의 논리칩과 통신하여 주사 체인의 클럭을 조정하는 논리 분석기 클럭 신호를 발생한다. 제어 회로는 또한 소정의 신호 조합이 논리칩에서 일어날 때 트리거 (trigger) 신호를 발생한다.
이제는 소자의 실시와 조합에 대해 다양하고 새로운 내용을 포함하는 본 발명의 상기 특성 및 다른 양호한 특성이 특별히 첨부된 도면을 참고로 설명되고 청구항에서 지적된다. 본 발명을 실현하는 특정한 방법 및 회로는 본 발명을 제한하는 것이 아니라 설명으로서만 도시되는 것으로 이해되어야 한다. 종래 기술에 숙련된 자에 의해 이해되는 바와 같이, 본 발명의 원리 및 특성은 본 발명의 범위에서 벗어나지 않고 다양하고 많은 실시예에서 사용될 수 있다.
본 발명은 일반적으로 전자 회로 설계를 검증하는 장치에 관한 것으로, 특히 다수의 설계 신호가 프로그램가능한 논리칩 사이에서 단일의 물리적인 와이어( wire)로 운반되는 하드웨어 에뮬레이션 시스템(hardware emulation system)에 관한 것이다.
도 1은 시간-멀티플렉싱을 포함하는 부분적 크로스바 네트워크 (crossbar network)를 도시하는 블록도.
도 2는 2 대 1 시간-멀티플렉싱에 대한 신호 관계를 도시하는 타이밍도.
도 3은 2 대 1 시간-멀티플렉싱을 실행하는데 FPGA에서 필요한 회로를 도시하는 블록도.
도 4는 멀티플렉싱 칩에서 동일한 회로를 도시하는 블록도.
도 5는 4 대 1 시간-멀티플렉싱에 필요한 시간 관계를 도시하는 타이밍도.
도 6은 4 대 1 시간-멀티플렉싱을 실행하는데 FPGA에서 필요한 논리를 도시하는 블록도.
도 7은 멀티플렉싱 칩에서 동일한 회로를 도시하는 블록도.
도 8은 하드웨어 에뮬레이션 시스템 (hardware emulation system)에 적절한 펄스폭 부호화 구조에 대한 신호 관계를 도시하는 타이밍도.
도 9는 하드웨어 에뮬레이션 시스템에 적절한 위상 부호화 구조에 대한 신호 관계를 도시하는 타이밍도.
도 10은 하드웨어 에뮬레이션 시스템에 적절한 직렬 데이터 부호화 구조에 대한 신호 관계를 도시하는 타이밍도.
도 11은 본 발명의 바람직한 실시예에서 논리 보드의 블록도.
도 12는 본 발명의 바람직한 실시예에서 다양한 회로 보드간의 상호연결을 도시하는 블록도.
도 13은 본 발명의 바람직한 실시예에서 물리적인 구조를 도시하는 도면.
도 14는 더 적은 논리적 용량을 갖는 바람직한 에뮬레이션 시스템의 버젼에서 다양한 회로 보드간의 상호 연결을 도시하는 블록도.
도 15는 하나의 논리 보드와 하나의 I/O 보드를 갖는 도 14의 에뮬레이션 시스템에서 물리적인 구조를 도시하는 도면.
도 16은 I/O 보드와 코어 (core) 보드의 블록도.
도 17은 mux 보드의 블록도.
도 18은 확장가능한 mux 보드의 블록도.
도 19는 본 발명의 바람직한 하드웨어 에뮬레이션 시스템에서 사용자 클럭이 분포된 방법을 도시하는 블록도.
도 20은 본 발명의 바람직한 하드웨어 에뮬레이션 시스템에서 제어 구조를 도시하는 블록도.
도 20a는 본 발명의 바람직한 실시예에서 논리 분석기의 블록도.
도 20b는 본 발명의 바람직한 실시예에서 논리 분석기 신호에 대한 데이터 경로를 도시한 블록도.
도 20c는 본 발명의 바람직한 실시예에서 논리 분석기 이벤트 (event)가 논리칩에 분포된 방법을 도시하는 블록도.
도 20d는 저장 소자 및 외부 입력값으로부터 프로브 신호 (probed signal)가 계산된 방법을 도시하는 논리도.
도 21은 본 발명의 하드웨어 에뮬레이션 시스템에서 바람직한 실시예를 프로그램하는 방법을 도시하는 흐름도.
도 22는 본 발명의 바람직한 실시예에 따라 작동 테스트벤치 컴파일러 (behavioral testbench compiler)에 의해 생성된 소프트웨어-하드웨어 모델의 컴파일에 필요한 단계 순차를 도시하는 흐름도.
도 22a는 본 발명의 바람직한 실시예에서 LCM 메모리 발생기에 의해 생성될 수 있는 메모리 회로의 예를 도시하는 블록도.
도 23은 본 발명의 바람직한 실시예에 따라 마이크로프로세서 이벤트 동기화 버스에 대한 상호-시뮬레이션 논리 (co-simulation logic)의 특수 연결을 나타내는데 생성되는 네트리스트 (netlist) 구조의 블록도.
도 24a는 본 발명의 바람직한 실시예에서 논리칩 중 I/O 핀의 종류에 의존해 삽입될 수 있는 시간-분할 멀티플렉싱 셀 (cell)을 도시하는 도면.
도 24b는 본 발명의 바람직한 실시예에서 논리칩 중 I/O 핀의 종류에 의존해 삽입될 수 있는 시간-분할 멀티플렉싱 셀을 도시하는 도면.
도 24c는 본 발명의 바람직한 실시예에서 논리칩 중 I/O 핀의 종류에 의존해 삽입될 수 있는 시간-분할 멀티플렉싱 셀을 도시하는 도면.
도 24d는 본 발명의 바람직한 실시예에서 논리칩 중 I/O 핀의 종류에 의존해 삽입될 수 있는 시간-분할 멀티플렉싱 셀을 도시하는 도면.
도 24e는 본 발명의 바람직한 실시예에서 논리칩 중 I/O 핀의 종류에 의존해 삽입될 수 있는 시간-분할 멀티플렉싱 셀을 도시하는 도면.
도 24f는 본 발명의 바람직한 실시예에서 논리칩 중 I/O 핀의 종류에 의존해 삽입될 수 있는 시간-분할 멀티플렉싱 셀을 도시하는 도면.
도 24g는 본 발명의 바람직한 실시예에서 논리칩 중 I/O 핀의 종류에 의존해 삽입될 수 있는 시간-분할 멀티플렉싱 셀을 도시하는 도면.
도 24h는 본 발명의 바람직한 실시예에서 논리칩 중 I/O 핀의 종류에 의존해 삽입될 수 있는 시간-분할 멀티플렉싱 셀을 도시하는 도면.
도 24i는 본 발명의 바람직한 실시예에서 논리칩 중 I/O 핀의 종류에 의존해 삽입될 수 있는 시간-분할 멀티플렉싱 셀을 도시하는 도면.
도 24j는 본 발명의 바람직한 실시예에서 논리칩 중 I/O 핀의 종류에 의존해 삽입될 수 있는 시간-분할 멀티플렉싱 셀을 도시하는 도면.
도 24k는 본 발명의 바람직한 실시예에서 논리칩 중 I/O 핀의 종류에 의존해 삽입될 수 있는 시간-분할 멀티플렉싱 셀을 도시하는 도면.
도 25는 본 발명의 바람직한 실시예에서 이벤트 검출 셀의 블록도.
도 26은 본 발명의 한 실시예에 따라 특수한 이벤트-멀티플렉싱 셀을 사용해 AND 트리 (tree)의 출력이 쌍으로 시간-멀티플렉싱되는 방법을 도시하는 도면.
도 27은 본 발명의 바람직한 실시예에서 이벤트 검출기 다운로드 (download) 회로의 블록도.
이제는 도면을 참고로 본 발명의 바람직한 장치 및 방법이 설명된다.
도 1은 본 발명의 하드웨어 에뮬레이션 시스템 (hardware emulation system)에 대한 바람직한 실시예에서 부분적인 크로스바 (crossbar) 상호연결 일부를 도시한다. 부분적인 크로스바 상호연결 설계의 실시예는 본 발명과 똑같은 양수인에게 선임된 미국 특허 No. 5,036,473, 5,448,496, 및 5,452,231에서 설명된다. 미국 특허 No. 5,036,473, 5,448,496, 및 5,452,231의 내용은 전체적으로 여기서 참고로 포함된다. 부분적 크로스바 상호연결에서, 각 논리칩의 입력/출력 핀은 각 논리칩상의 똑같은 분할을 사용해 적절한 서브세트로 분할된다. 각 Mux 칩 (또한 크로스바 칩이라 공지된)의 핀은 각 논리칩으로부터의 똑같은 핀의 서브셋에 연결된다. 그래서, 크로스바 칩 'n'은 각 논리칩의 핀 중 서브세트 'n'에 연결된다. 서브세트가 있는 만큼의 크로스바 칩이 사용되고, 각 크로스바 칩은 서브세트내의 핀수와 논리칩의 수를 곱한 수 만큼의 핀을 갖는다. 각 논리칩/크로스바 칩의 쌍은 각 서브세트내의 핀수 만큼 많은 경로 (path)라 칭하여지는 와이어 (wire)로 상호연결된다.
도 1의 부분적 크로스바 상호연결은 다수의 프로그램가능한 상호연결 블록(12)을 포함하고, 이는 바람직한 실시예에서 멀티플렉서 칩 (Mux chip)이다. 도 1의 부분적 크로스바 상호연결은 또한 다수의 재프로그램가능하게 구성될 수 있는 논리칩(10)을 포함하고, 이는 바람직한 실시예에서 필드-프로그램가능 게이트 어레이 (field-programmable gate array, FPGA)이다. 각 Mux 칩(12)은 각 논리칩(10)에 대해 하나 이상의 연결을 갖는다. 설명되는 바람직한 실시예에서, 논리칩으로부터 Mux 칩으로 전해지는 각 설계 신호는 하나의 물리적 상호연결을 취한다. 다른 말로 하면, 논리칩(10)으로부터 핀상의 한 신호는 Mux 칩(12)상의 한 핀에 상호연결된다. 본 발명의 실시예에서, 부분적 크로스바 설계의 물리적 상호연결은 하나 이상의 설계 신호를 나타낼 수 있다.
각 Mux 칩(12)은 다수의 입력 디멀티플렉서(24)와 출력 멀티플렉서(26)를 갖춘 크로스바(22)를 포함한다. 입력 디멀티플렉서(24)는 시간-멀티플렉싱된 입력 신호를 수신하여 이를 하나 이상의 구성성분 신호로 분할한다. 구성성분 신호는 크로스바(22)를 통해 분리하여 전해진다. 이들은 출력 멀티플렉서 회로(26)에 의해 똑같거나 다른 조합으로 다시 멀티플렉싱된다. 바람직한 실시예에서, 시간-멀티플렉싱된 신호는 Mux 칩 크로스바(22)를 통해 전해지지 않는다. 시간-멀티플렉싱된 신호를 Mux 칩 크로스바(22)를 통해 전달하지 않음으로서, Mux 칩으로의 입력 신호 및 출력 신호가 다른 조합으로 합쳐질 수 있기 때문에 부분적 크로스바 네트워크를 전달하는 탄력성이 증가된다. 이는 또한 시간-멀티플렉싱 주파수가 전형적으로 구성성분 신호의 평균 스위칭 비율 보다 훨씬 더 높으므로 Mux 칩(12)의 전력 소모를 감소시킨다.
논리칩(10)은 또한 다수의 입력 디멀티플렉서(34)와 출력 멀티플렉서(36)를 포함한다. 출력 멀티플렉서(36)는 하나 이상의 내부 논리칩(10) 신호를 수신하여 이들을 하나의 물리적 상호연결로 조합한다. 입력 디멀티플렉서(34)는 시간-멀티플렉싱된 신호를 수신하여 이를 하나 이상의 내부 논리칩(10) 신호로 분할한다. 바람직한 실시예에서, 이들 멀티플렉서(36) 및 디멀티플렉서(34)는 상업적으로 이용가능한 기성품 FPGA 중 내부 구성가능한 논리 블록을 사용해 구성된다. 그러나, 이들은 에뮬레이션을 위해 설계된 재프로그램가능한 논리칩 주문품의 입력/출력 블록을 사용해 구성될 수 있다.
도 1은 설명을 목적으로 각각 4개 핀을 갖는 2개의 Mux 칩(12)과 각각 2개 핀을 갖는 4개의 논리칩(10)을 도시한다. 바람직한 하드웨어 에뮬레이션 시스템의 실제 실시예는 더 많은 종류의 칩을 갖게 되고 각 칩은 더 많은 핀을 갖게 된다. Mux 칩(12), 논리칩(10), 및 각각의 핀수에 대한 실제 수는 순전히 설계상의 선택 문제로서, 이루어지기 원하는 게이트 용량에 의존한다. 바람직한 실시예에서, 각 인쇄 회로 보드는 54개 Mux 칩(12)과 37개 논리칩(10)을 포함한다. 주어진 논리칩(10)은 Xilinx Corporation에 의해 제작된 4036XL FPGA (또한 "논리셀 어레이 (logic cell array)"라 공지된)이다. 그러나, Altera Corporation, Lucent Technologies, 또는 Actel Corporation으로부터 이용가능한 것과 같이 다른 재프로그램가능한 논리칩이 사용될 수 있음을 주목하여야 한다. 바람직한 실시예에서, 36개의 논리칩(10)은 54개 Mux 칩(12) 각각에 대해 5가지로 연결된다. 이는 이들 36개 논리칩(10) 각각의 핀 중 5개가 54개 Mux 칩(12) 각각의 5개 핀에 물리적인 전기 연결을 가짐을 의미한다. 37번째 논리칩(10)은 54개 Mux 칩(12) 각각에 3가지로 연결된다. 이는 37번째 논리칩(10)의 핀 중 3개가 54개 Mux 칩(12) 각각의 3개 핀에 물리적인 전기 연결을 가짐을 의미한다.
도 2는 내부 논리칩 신호 A(40)와 내부 논리칩 신호 B(42)가 단일 출력 신호(46)로 멀티플렉싱된 2 대 1 시간-멀티플렉싱 에뮬레이션 시스템에 대한 타이밍도의 예를 도시한다. Mux 클럭 신호(44)는 분할된 클럭 신호(50)를 만들도록 2로 나뉜다. SYNC- 신호(46)는 SYNC- 신호(48)가 저상태인 경우 Mux 클럭(44)의 하강 엣지 (falling edge)가 분할된 클럭 신호(50)를 0으로 설정하도록 Mux 클럭 분할기(68) (도 3을 참고)를 동기화하는데 사용된다. 분할된 클럭(50)은 각 상승 엣지 (rising edge)에서 내부 신호 A(40)를 샘플링하는데 사용된다. 이러한 샘플은 플립플롭 (flip-flop)이나 래치 (latch) (도 3에 도시된)와 같은 저장 소자에 배치된다. 똑같은 분할 클럭 신호(50)는 각 하강 엣지에서 내부 신호 B(42)를 샘플링하는데 사용된다. 이러한 샘플은 또 다른 플립플롭이나 래치 (도 3에 도시된)에 배치된다. 바람직한 실시예에서, Mux 클럭 신호(44)는 신호 A(40) 및 신호 B(42)에 비동기화될 수 있다. 분할된 클럭 신호(50)의 값이 고상태일 때, 이전에 샘플링된 신호 A(40)는 출력 신호(46)로 전달된다. 분할된 클럭 신호(50)가 저상태일 때, 이전에 샘플링된 신호 B(42)는 출력 신호(46)로 전달된다.
이제는 도 3을 참고로, 도 2에 도시된 신호의 타이밍을 생성하는 바람직한 실시예 중 FPGA(10)에서 실시된 논리가 상세히 도시된다. 2 대 1 클럭 분할기(68)는 분할된 클럭 신호(50)를 만들도록 Mux 클럭 신호(44)을 나눈다. 클럭 분할기(68)는 플립플롭(68a), AND 게이트(68b), 및 인버터(68c)를 포함한다. 분할된 클럭 신호(50)는 출력 멀티플렉서(66) (도 1의 멀티플렉서(36)를 참고) 및 입력 디멀티플렉서(64) (도 1의 디멀티플렉서(34)를 참고)에 입력된다. 클럭 분할기(68)는 시스템내의 모든 클럭 분할기가 동기화되는 것을 보장하도록 SYNC-신호(48)에 의해 주기적으로 재설정된다. 입력 디멀티플렉서(64)는 2개의 플립플롭 (65a, 65b)로 구성된다. 플립플롭 (65a, 65b)은 Mux 클럭(44)에 의해 클럭 조정된다. 한 플립플롭 (예를 들면, 65b)는 분할 클럭 신호(50)가 고상태일 때 인에이블 (enable)되고, 다른 것 (예를 들면, 65a)은 분할 클럭 신호(50)가 저상태일 때 인에이블된다. 분할 클럭 신호(50)는 입력 디멀티플렉서(64) 및 출력 멀티플렉서(66)에서 플립플롭 (65a, 65b)에 대한 클럭으로 직접 사용되지 않고 FPGA(10)에서 낮은 스큐선 (low-skew line)을 유지한다. 플립플롭 (65a, 65b)의 출력은 FPGA(10)의 코어 (core)(62)에 정적 디멀티플렉싱 설계 신호를 제공한다 (FPGA(10)의 코어(62)는 사용자 설계의 논리 기능을 실시하는데 사용되는 구성가능한 소자를 포함한다). 출력 멀티플렉서(66)는 Mux 클럭(44)에 의해 클럭 조정되는 2개의 플립플롭 (67a, 67b)을 포함한다. 출력 멀티플렉서(66)는 또한 2 대 1 멀티플렉서(67c)를 포함한다. 한 플립플롭 (예를 들면, 플립플롭 67b)은 분할 클럭 신호(50)가 고상태일 때 인에이블되고, 다른 플립플롭 (예를 들면, 플립플롭 67a)은 분할 클럭 신호(50)가 저상태일 때 인에이블된다. 2 대 1 멀티플렉서(67c)는 플립플롭(67a) 또는 플립플롭(67b)의 출력(Q)을 선택하여 출력핀에 제공한다.
도 4에는 그에 대응하는 Mux 칩(12)의 회로가 도시된다. 논리칩(10)의 회로와 다르게, Mux 칩(12)의 출력 멀티플렉서(76) (도 1의 멀티플렉서(26)를 참고)는 플립플롭 없이 구성되므로, 2 대 1 멀티플렉서(76a)를 구비한다. 이는 바람직한 실시예에서 Mux 칩(12)을 통한 지연이 짧기 때문에 가능하다. 추가 논리를 절약하기 위해, 입력 디멀티플렉서(74) (도 1의 디멀티플렉서(24)를 참고)는 인에이블 입력을 갖지 않는다. 대신에, 분할 클럭 신호(50)가 플립플롭 (74a, 74b)의 클럭을 조정하는데 직접 사용된다. 클럭 분할기(78)는 플립플롭(78a), AND 게이트(78b), 및 인버터(78c)로 구성된다. 클럭 분할기(78), 입력 디멀티플렉서(74), 및 출력 멀티플렉서(76)는 도 3에서 대응하는 소자와 유사하게 동작한다.
Mux 칩(12)상의 입력/출력 ("I/O") 핀이 소정의 설계에 대한 입력 또는 출력이 되는가 여부를 미리 알지 못하므로, Mux 칩(12)내의 모든 I/O 핀은 입력 디멀티플렉서(74) 및 출력 멀티플렉서(76)를 모두 포함한다.
본 발명의 개념을 사용해, 핀이 일정 시간 동안 입력이 되고 일정 시간 동안 출력이 되는 4 대 1 시간-멀티플렉싱을 실시하는 것이 가능하다. 도 5는 4 대 1 시간-멀티플렉싱에 대한 타이밍도이다. 2 대 1 시간-멀티플렉싱과 같이, Mux 클럭 신호(44)와 SYNC- 신호(48)가 있다. Mux 클럭 신호(44)는 분할된 클럭 신호(50)를 만들도록 2로 나뉜다. 분할기는 SYNC- 신호가 저상태이고 Mux 클럭 신호(44)에서 하강 엣지가 일어날 때 동기화되어 재설정된다. 부가하여, 분할된 클럭 신호(50)를 다시 2로 나눔으로서 만들어지는 추가 방향 신호(80)가 있다. 방향 신호(80)는 시간상으로 각 순간에 핀이 입력인가 또는 출력인가 여부를 제어한다. 이후 설명될 바와 같이, 4개 인에이블 신호 E0(90), E1(92), E2(94), 및 E3(96)는 논리칩(10)에서 각 플립플롭을 인에이블하는데 사용된다. 이들 4개 신호는 분할 클럭 신호(50)와 방향 신호(80)로부터 유도된다.
분할 클럭 신호(50)는 방향 신호(80)가 저상태일 때 내부 입력 신호 E(86) 및 내부 입력 신호 F(88)를 만들도록 외부 신호(98)를 샘플링한다. 방향 신호(80)가 저상태일 때, 이는 핀이 입력 방향으로 동작하고 있음을 의미한다. 내부 입력 신호 E(86)는 분할 클럭 신호(50)의 상승 엣지에서 샘플링함으로서 만들어진다. 내부 입력 신호 F(88)는 분할 클럭 신호(50)의 하강 엣지에서 샘플링함으로서 만들어진다. 방향 신호(80)가 고상태일 때, 이를 수신하는 핀은 출력으로 동작한다. 내부 출력 신호 C(82)는 분할 클럭 신호(50)가 저상태일 때 외부 신호(98)로 출력되고, 내부 출력 신호 D(84)는 분할 클럭 신호(50)가 고상태일 때 출력된다.
이제는 도 6을 참고로, 도 5의 타이밍 신호를 생성하도록 논리칩(10)에서 실시되는 논리가 상세히 도시된다. 클럭 분할기(104)는 Mux 클럭 신호(44)를 나누어 분할 클럭 신호(50) 및 방향 신호(80)를 만든다. 클럭 분할기(104)는 플립플롭 (104a, 104b), AND 게이트 (104c, 104d), 인버터(104e), EXCLUSIVE-OR 게이트(104f), 및 AND 게이트 (104g-104j)로 구성된다. 클럭 분할기(104)는 시스템내의 모든 클럭 분할기(104)가 동기화되는 것을 보장하도록 SYNC- 신호(48)에 의해 주기적으로 재설정된다. 부가하여, 클럭 분할기 회로(104)는 또한 인에이블 신호 E0(90), E1(92), E2(92), 및 E3(96)를 만든다. 이들 신호는 입력/출력 멀티플렉서 회로 (100, 102)에서 인에이블로 사용된다.
입력/출력 멀티플렉서 회로(100)는 도 5의 도면에 대응하는 타이밍을 갖는다. 외부 신호(98)는 방향 신호(80)가 저상태일 때 입력이다. 신호 E(86) 및 신호 F(88)는 인에이블 신호 E0(90) 및 인에이블 신호 E1(92)가 활성화 상태일 때 외부 신호(98)로부터 샘플링되어 플립플롭 (100a, 100b)에 각각 배치된다. 신호 D(84) 및 C(82)는 인에이블 신호 E2(94) 및 E1(92)가 활성화 상태일 때 플립플롭 (100c, 100d)에 저장된다. 바람직한 입력/출력 멀티플렉서 회로(100)는 또한 멀티플렉서(100e)와 버퍼(100f)로 구성된다. 이는 방향 신호(80)가 고상태일 때 앞서 플립플롭 (100c, 100d)에 저장된 신호 D(84) 및 C(82)가 외부 신호(98)에 연속적으로 나타나게 한다.
입력/출력 멀티플렉서 회로(102)는 방향 신호(80)가 저상태일 때 신호(106)가 출력이도록 타이밍이 변경되는 것을 제외하면 유사하다. 입력/출력 멀티플렉서(102)는 플립플롭 (102a - 102d), 멀티플렉서(102e), 및 버퍼(102f)로 구성된다. 입력/출력 멀티플렉서(100)는 여기서 "입출력 (inout)" 멀티플렉서로 칭하여지는 반면, 멀티플렉서(102)는 "출입력 (outin)" 멀티플렉서로 칭하여진다. 핀이 시스템에서 함께 연결될 때, 입출력 핀은 한 핀이 구동되는 동안 다른 것은 청취 (즉, 수신될 준비가 되어 있거나 신호를 수신하고 있는)하고 있도록 항상 출입력 핀에 연결되어야 한다.
Mux 칩(12)에 대해 대응하는 4-방향 시간-멀티플렉싱 회로는 도 7에 도시된다. 클럭 분할기(132)는 분할된 클럭 신호(50)와 방향 신호(80)를 만든다. 클럭 분할기(132)는 플립플롭 (132a, 132b), AND 게이트(132c, 132d), 인버터(132e), 및 EXCLUSIVE-OR 게이트(132f)로 구성된다. 논리칩(10)에서와 같이, 입출력 멀티플렉서(120)와 출입력 멀티플렉서(122)가 있다. 입출력 멀티플렉서(120)는 플립플롭 (120a, 120b), 2 대 1 멀티플렉서(120c), 및 버퍼(120d)로 구성된다. 입출력 멀티플렉서(120)는 도 5에 도시된 타이밍을 갖는다. 외부 신호(98)는 방향 신호(80)가 저상태일 때 입력이고, 방향 신호(80)가 고상태일 때 출력이다. 내부 신호 (124, 126)는 방향 신호(80)가 저상태일 때 외부 신호(98)로부터 샘플링된다. 내부 신호 (128, 130)는 방향 신호(80)가 고상태일 때 외부 신호(98)로 출력된다.
출입력 멀티플렉서 회로(122)는 방향 신호(80)가 고상태일 때 신호(134)가 입력이고 방향 신호(80)가 저상태일 때 출력이 되도록 타이밍이 변경된 것을 제외하고 유사하다. 출입력 멀티플렉서(122)는 플립플롭 (122a, 122b), 2 대 1 멀티플렉서(122c), 및 버퍼(122d)로 구성된다. Mux 칩(12)상의 출입력 핀은 또 다른 Mux 칩(12)이나 논리칩(10)에서 입출력 핀에 연결되어야 한다. 추가 구성 비트 (도 7에는 도시되지 않은)는 입력 또는 출력과 같이 비-멀티플렉싱, 2 대 1 멀티플렉싱되거나, 입출력 또는 출입력 핀과 같이 4 대 1 멀티플렉싱되도록 Mux 칩(12)의 핀을 프로그램가능하게 구성하는 것을 가능하게 만든다. 이는 선택적으로 방향 신호(80)를 항상 저상태로 놓거나 (2 대 1 입력으로), 항상 고상태로 놓거나 (2 대 1 출력으로), 비반전되게 하거나 ((120)에서와 같이 입출력 4 대 1 핀으로), 또는 반전되게 ((122)에서와 같이 출입력 4 대 1 핀으로)함으로서 행해진다. 부가하여, 외부 신호(98)는 비-멀티플렉싱 입력으로 코어 신호(124)에 직접 연결될 수 있다. 코어 출력 (128, 130)은 비-멀티플렉싱 출력으로 버퍼(120d)의 인에이블 핀과 입력에 직접 연결될 수 있다.
바람직한 실시예가 2 대 1 및 4 대 1 시간-멀티플렉싱을 포함하더라도, 설명되는 기술은 설계자가 선택한 다른 계수에 의한 멀티플렉싱을 허용하도록 확장될 수 있다. 일반적으로, 더 높은 멀티플렉싱 계수는 더 느린 에뮬레이션 속도를 제공하게 되지만, 물리적 와이어와 핀이 더 많은 논리적 설계 신호간에 공유될 수 있기 때문에 더 간단하고 더 낮은 비용의 하드웨어를 허용하게 된다.
더욱이, 에뮬레이션 시스템에서 사용될 수 있는 단일 물리적 와이어에 다수의 비트의 정보를 멀티플렉싱하기 위한 다른 방법은 많이 있다. 예를 들면, 펄스폭 변조, 위상 변조, 및 직렬 데이터 부호화가 있다. 특정한 실시예에서 어느 기술이 사용되는가의 선택은 설계자 선택의 문제로, 동작 속도, 비용, 전력 소모, 및 요구되는 논리의 복잡성 사이의 관계에 의존한다.
하드웨어 에뮬레이션 시스템에서 중요한 보다 복잡한 부호화 구조의 한 특성은 전력 소모를 줄이는 기능이다. 하드웨어 에뮬레이션 시스템은 전형적으로 수천개의 상호연결 경로를 갖게 된다. 시스템을 통한 지연을 최소화하기 위해서는 다른 논리 설계 신호 사이에서 가능한한 신속하게 상호연결 경로를 교환하는 것이 바람직하다. 그러나, 시스템의 전력 소모는 대부분 상호연결 경로가 교환되는 속도에 의해 결정된다. 대형 시스템에서는 전력을 발생 및 분포하고 결과의 열을 제거하는 것이 시스템의 복잡성 및 비용을 상당히 증가시킬 수 있다. 그러므로, 신속하게 동작하지만 많은 양의 전력을 요구하지 않는 멀티플렉싱 구조를 갖는 것이 바람직하다. 전력 소실이 최소화될 수 있는 한가지 방법은 바람직한 실시예에서 실시된 바와 같이 설계 신호 정보를 연속하여 전달하기 보다는 설계 데이터가 변화될 때만 설계 신호 정보를 전달하는 것이다.
부호화 구조를 선택할 때 고려되는 또 다른 중요한 특성은 마스터 멀티플렉싱 클럭에 비동기화되거나 서로 비동기화되어 동작하는 상호연결을 갖는 기능이다.바람직한 실시예에 대해 상술된 간단한 형태의 시간-멀티플렉싱에서, 마스터 멀티플렉싱 클럭은 시스템내의 모든 논리칩(10) 및 Mux 칩(12)에 낮은 스큐 (skew)로 분포되어야 한다. 부가하여, 마스터 멀티플렉싱 클럭은 신호가 시스템에서 가장 긴 상호연결 경로를 통과하는 시간을 갖기에 충분히 느리게 운행되어야 한다. 동시에, 시스템내의 가장 짧은 상호연결 경로에 대해 유지 시간을 위반하지 말아야 한다. 수신 디바이스가 데이터 신호를 플립플롭이나 래치에 적절히 저장하기 이전에 전송 디바이스가 이를 제거하면 유지 시간 위반이 일어날 수 있다. 낮은 스큐 마스터 클럭이 요구되면, 에뮬레이션 시스템의 복잡성 및 비용이 상당히 증가된다. 부가하여, 신호에 있어서 가장 길 가능성이 있는 데이터 경로를 통과하기에 충분한 시간을 보장하면서 가장 짧을 가능성이 있는 데이터 경로에서의 유지 시간 위반을 갖지 않도록 요구하는 것은 멀티플렉싱 클럭이 비교적 느리게 동작되어야 함을 의미한다. 앞서 설명된 바와 같이, 이는 에뮬레이션 시스템의 실효 동작 속도를 제한하기 때문에 바람직하지 못하다.
가장 간단한 형태의 시간-멀티플렉싱에 대해 상술된 본 발명의 개념은 이제 설명하게 될 보다 복잡한 부호화 구조에 동일하게 적용될 수 있다. 펄스폭 변조, 위상 쉬프트 변조, 및 직렬 부호화를 사용한 부호화 구조는 전력 소모를 감소시키고 가장 간단한 형태의 시간-멀티플렉싱 특성인 비교적 낮은 동작 속도를 증가시킬 수 있다. 이들 모든 구조의 불편한 점은 (간단한 시간-멀티플렉싱에 대해) 상당히 더 많은 부호화 및 복호화 논리를 요구하고, 그러한 이유로, 주어진 바람직한 실시예에서는 간단한 시간-멀티플렉싱이 사용되었다. 디지탈 논리의 비용은 물리적 핀과 회로 보드 트레이스의 비용에 비교해 감소되므로, 미래에는 이러한 보다 복잡한 부호화 구조가 하나 이상 사용될 가능성이 있다.
도 8을 참고로, 하드웨어 에뮬레이션 시스템에 적절한 펄스폭 변조 형태가 도시된다. 외부 신호(146)는 통상적으로 저상태이다. 설계 신호 (140 또는 142)에서 전이가 일어날 때, 펄스는 외부 신호(146)에서 방출된다. 고속 비동기화 클럭 신호(144)는 시스템내의 모든 칩에 분포된다. 도 2를 참고로 상술된 Mux 클럭(44)과 다르게, 비동기화 클럭 신호(144)는 시스템내의 두 칩 사이에서, 또는 같은 칩상의 두 핀 사이에서도 동기화될 필요가 없다. 그러므로, 도 2를 참고로 상술된 바와 같은 SYNC- 신호(48)가 필요없다. 또한, 비동기화 클럭 신호(144)는 외부 신호(144)에서 만들어진 최소 펄스폭이 변형되지 않고 상호연결을 통과하는 한 임의의 속도로 동작될 수 있다. 외부 신호(146)에서 방출된 펄스는 신호 전이가 일어났을 때 2개의 설계 신호 (140, 142)가 00, 01, 10, 또는 11의 값을 갖는가 여부에 의존해 1, 2, 3, 또는 4개 클럭의 폭을 갖는다. 그러나, 비동기화 클럭 신호(144)는 정보가 손실되지 않음을 보장하도록 설계 신호 (140, 142)의 연속적인 엣지 사이에 항상 5개 클럭 싸이클이 경과하도록 충분히 빨라야 한다. 데이터 신호 (140, 142)는 외부 신호(146)가 고상태로 될 때마다 일어나는 비동기화 클럭(144) 싸이클의 수를 카운트함으로서 외부 신호(146)로부터 회복된다. 실제 실시예에서, 비동기화 클럭(144)은 회복된 신호가 애매하지 않게 구별될 수 있도록 도시된 속도의 2 또는 3배로 동작된다. 설계 신호 전이가 없더라도 설계가 적절하게 초기화되기 위해 주기적으로 데이터를 전달하는 추가 회로가 또한 부가된다.
설계 신호 (140, 142)는 비동기화 클럭(144)과 비교해 평균적으로 비교적 드물게 전이되므로, 상술된 연속적인 시간-멀티플렉싱 구조와 비교해 전력 소모가 더 적어진다. 부가하여, 이 부호화 구조는 전송 회로와 수신 회로 사이의 지연량을 변화시키는 것에 의해 영향을 받지 않는다.
이 펄스폭 부호화 구조를 실시하는데 필요한 논리 회로는 회로 설계의 기술에 숙련된 자에 의해 설계될 수 있으므로, 여기서는 더 논의되지 않는다. 그러나, 종래 기술에 숙련된 자는 똑같은 기능을 계속 이루면서 많은 다른 변형을 갖는 논리 회로를 설계할 수 있음을 주목하여야 한다. 예를 들면, 2개 대신에 3개의 설계 신호가 하나의 외부 신호(146)로 부호화될 수 있다. 또한, 설계 신호 (140, 142)의 다른 부호화가 사용되거나 외부 신호(146)의 디폴트 (default) 값이 0 대신에 1로 될 수 있다.
도 8을 참고로 설명된 펄스폭 변조 부호화 구조는 다음의 제한을 갖는다. 펄스폭 변조 부호화 구조에서, 펄스폭은 외부 신호(146)의 상승 엣지로부터 외부 신호(146)의 하강 엣지까지 측정되어야 한다. 그러나, 신호가 다수의 레벨의 전달 칩을 통과할 때, 상승 엣지는 때때로 하강 엣지 보다 다른 양 만큼 지연된다. 그러므로, 신호 멀티플렉싱의 속도는 신호값이 다수의 레벨의 전달 칩을 통과한 이후에도 계속 구별될 수 있도록 낮추어질 필요가 있다. 또한, 도 8의 변조 구조는 외부 신호(146)에서 피할 수 없는 순간적인 신호 전이나 돌발적인 고장에 민감하여, 잘못된 신호값이 전달되게 할 수 있다.
도 9를 참고로, 하드웨어 에뮬레이션 시스템에 적절한 위상 변조 형태가 도시된다. 내부 PLL (phase-locked loop) 회로는 동기화 클럭(144)을 입력으로 사용해 1 내지 3 (도 9에서 PLL 카운트(150)로 도시된)을 연속적으로 카운트한다. PLL 회로는 CMOS (complementary metal oxide semiconductor) 집적 회로 기술로 비교적 쉽게 구성되는 디지탈 PLL (DPLL)로 일반적으로 공지된 종류가 될 수 있다. 설계 신호 (140 또는 142)에서 전이가 일어날 때, 외부 신호(152)는 설계 신호 (140, 142)의 값에 의존하는 시간에 전이된다. 예를 들면, 신호 A(140)가 먼저 전이된 이후, 신호 A(140)와 신호 B(142)는 모두 고상태로 된다. 그러므로, 외부 신호(152)는 PLL이 카운트 3일 때 (A, B = 11) 전이된다. 나중에, 신호 B(142)가 전이된 이후, 신호 A(140)는 고상태로 되고 신호 B(142)는 저상태로 된다. 그러므로, 외부 신호(152)는 PLL이 카운트 2 일 때 (A, B = 10) 전이된다.
수신 회로는 데이터가 전송될 필요가 없을 때 주기적으로 전달되는 싱크 펄스 (sync pulse)에 의해 전송 PLL에 동기화되어 유지되는 정합 PLL을 갖는다. 싱크 펄스는 전송 PLL의 시간 0 및 시간 2에서 일어나는 2번의 전이로 구성된다. 싱크 펄스는 한 PLL 싸이클내에서 외부 신호(152)에 2번의 전이가 일어날 때이므로, 수신 PLL에 의해 인식될 수 있다. 싱크 펄스는 수회의 싱크 펄스가 일어나 이후 전송 PLL과 동기화되도록 수신 PLL이 점차적으로 카운트를 조정하게 한다. 싱크 펄스는 신호 A(140) 및 신호 B(142)에서의 전이와 비교해 드물게 일어날 필요만 있으므로, 전력 소모가 많이 증가되지 않는다. 실제 실시예에서, 비동기화 클럭(144)은 외부 신호(152)에서 다른 엣지 전이 시간 사이를 명확히 구별하기에 충분한 해상도를 갖도록 도 9에 도시된 것의 2 또는 3배의 상대 속도로 동작된다. 다른 방법으로, PLL은 해상도를 증가시키도록 비동기화 클럭(144)의 주파수의 배수로 운행될 수 있다. 또한, 전이가 일어나지 않더라도 설계 신호 A(140)와 설계 신호 B(142)의 값을 주기적으로 전송하도록 회로가 포함되므로, 설계가 적절하게 초기화된다.
디지털 PLL을 실시하는데 필요한 회로와 이 위상 부호화 구조에서 사용되는 전송 및 수신 회로는 회로 설계의 기술에 숙련된 자에 의해 설계될 수 있으므로, 여기서는 더 이상 논의되지 않는다.
상기에 논의된 위상 변조 부호화 구조는 앞서 논의된 펄스폭 변조 구조 (도 8을 참고) 보다 몇가지 이점을 갖는다. 도 8에서 외부 신호(146)에 대한 경우 보다 신호 A(140) 및 신호 B(142)의 값을 전송하는데는 외부 신호(152)상의 전이가 거의 요구되지 않는다. 이는 시스템에 의해 소모되는 전력을 줄인다. 또한, 돌발적인 고장이나 짧은 펄스가 싱크 펄스로 다루어져 PLL 카운트(150)에 대해 단지 점차적인 효과만을 갖기 때문에 회로가 잡음에 덜 민감해질 수 있다. 부가하여, 싱크 펄스가 항상 하나의 상승 엣지와 하나의 하강 엣지를 포함하므로, 상승 엣지와 하강 엣지의 시간을 조정하는데 분리된 PLL 카운터가 사용될 수 있다. 상승 및 하강 엣지를 분리하여 시간 조정함으로서, 비동기화 클럭(144)은 매우 높은 주파수로 운행될 수 있고, 외부 신호(152)는 신호 A(140)와 신호 B(142)를 확실히 회복하는 기능에 영향을 받지 않고 다수의 중간 전달 칩을 통과할 수 있다. 그러나, 위상 변조의 주된 불편한 점은 비교적 많은 양의 디지털 논리를 실시하도록 요구한다는 점이다.
본 발명의 지시로부터 벗어나지 않고 여기서 설명된 위상 변조 부호화 구조의 많은 변형이 가능하다. 예를 들면, PLL은 단 4번 보다 8 또는 16번의 전이 시간을 인식할 수 있다. 또한, 설계 신호에서 전이가 일어날 때마다 외부 신호(152)에서 하나 이상의 엣지를 생성함으로서 추가 설계 신호가 전송될 수 있다. 예를 들면, 설계 신호 A와 B는 외부 신호(152)의 제1 엣지에서 전송될 수 있고, 설계 신호 C와 D는 외부 신호(152)의 제2 엣지에서 전송될 수 있다. 이는 더 낮은 속도이지만 외부 신호(152)에서 더 많은 데이터를 전송하는 효과를 갖는다.
도 10을 참고로, 하드웨어 에뮬레이션 시스템에서 또한 유용한 또 다른 형태의 변조가 도시된다. 이 기술은 직렬 데이터 부호화라 공지된다. RS232와 같은 다수의 공통 프로토콜 (protocol)은 직렬 데이터 부호화의 변형을 사용한다. 설계 신호 A(140) 또는 설계 신호 B(142)가 전이될 때, 직렬 데이터 스트링 (string)은 외부 신호(162)로 전송된다. 항상 0인 시작 비트는 전송이 막 일어나려 함을 의미한다. 다음에는 신호 A(140)와 신호 B(142)의 값이 연속적으로 전송된다. 마지막으로, 항상 1인 중단 비트가 전송된다. 수신 회로는 신호 A(140)를 회복하도록 외부 신호(162)를 샘플링하기 이전에 시작 비트의 하강 엣지로부터 1 1/2 클럭을 지연시키는데 비동기화 클럭 신호(144)를 사용한다. 이어서, 이는 신호 B(142)를 회복하도록 다시 외부 신호(162)를 샘플링하기 이전에 추가 클럭을 지연시킨다. 실제 실시예에서, 비동기화 클럭(144)은 신호 A(140)와 신호 B(142)가 전송되고 있을 때 중간점에서 정확히 외부 신호(162)를 샘플링하도록 도 10에 도시된 것 보다 수배 더 높은 상대 주파수에서 동작한다.
직렬 데이터 부호화 구조를 실시하는데 필요한 회로는 회로 설계의 기술에 숙련된 자에 의해 설계될 수 있으므로, 여기서는 더 이상 논의되지 않는다.
직렬 데이터 부호화는 상대적으로 간단한 디지털 논리가 사용된다는 이점을 갖는다. 그러나, 설계 신호 A(140)와 설계 신호 B(142)에 각 변화를 전송하는데는 외부 신호(162)에서 수개의 엣지가 요구된다는 불편한 점을 갖는다. 이는 다른 기술과 비교해 데이터 비율이 상대적으로 낮고 전력 소모가 비교적 높음을 의미한다.
본 발명의 지시에서 벗어나지 않고 여기서 설명된 직렬 데이터 부호화 구조의 많은 변형이 가능하다. 예를 들면, 설계 신호가 전이될 때마다 2 이상의 설계 신호에 대한 값이 전송될 수 있다.
도 8 내지 도 10에 도시된 부호화 기술은 일부 형태의 에러 점검 기술을 부가함으로서 더 개선될 수 있다. 설계 데이터는 설계 신호가 변할 때에만 전송되므로, 전송 에러는 수신 회로에 의해 잘못된 데이터값이 래치 (latch)되게 하고 에뮬레이션 시스템이 잘못 동작될 가능성이 있게 한다. 패리티 또는 CRC (cyclic redundancy checking)와 같은 공통된 에러 검출 및 정정 기술이 사용될 수 있다.
이제는 바람직한 실시예의 시스템 특성이 보다 상세히 설명된다. 도 11을 참고로, 논리칩 (바람직한 실시예에서 FPGA인) 및 Mux 칩(12)을 포함하는 바람직한 실시예의 논리 보드(200)에 대한 블록도가 도시된다. 논리 보드(200)는 Butts에서 설명된 것과 유사한 부분적인 크로스바 상호연결을 갖는다. 주된 차이는 이후 논의될 논리칩(204)이 다른 논리칩 보다 더 적은 Mux 칩(12)과의 연결을 갖기 때문에, 본 발명의 바람직한 실시예에 대한 부분적 크로스바가 완전히 균일하지 않다는 점이다. 본 실시예에서는 각각에 260개 I/O 핀을 갖는 54개 Mux 칩(12)과 각각에 270개 I/O 핀을 갖는 36개 논리칩 (FPGA)(10)이 있다. 본 실시예는 Xilinx Corporation, San Jose, Californiz, U.S.A.에 의해 제작된 부품 번호 XC4036XL로 논리칩(10)인 FPGA를 사용한다. 36개 논리칩(10) 각각은 54개 Mux 칩(12) 각각에 5개의 연결을 갖는다. 여기서 CoSim (co-simulation)으로 공지된 37번째 논리칩(204)은 54개 Mux 칩(12) 각각에 3개의 연결을 갖는다. 본 실시예에서, 이 37번째 논리칩(204)은 또한 부품 번호 4036XL를 갖는 Xilinx에 의해 제작된 FPGA이다. Mux 칩(12)과 논리칩(10)상의 추가 핀 (도시되지 않은)은 다운로드 (download), 클럭 분포, 및 다른 시스템 기능을 위해 예정된다. 이후에는 CoSim 논리칩(204)의 목적이 논의된다. Mux 칩(12) 대 논리칩(10)의 연결은 Mux 칩(12)과 논리칩(10)을 적절하게 프로그래밍함으로서 비-멀티플렉싱, 2 대 1 멀티플렉싱, 또는 4 대 1 멀티플렉싱 될 수 있다.
상기에 논의된 상호연결에 부가하여, CoSim 논리칩(204)은 또한 프로세서(206)와 전기적으로 통신한다. 본 실시예에서, 프로세서(206)는 IBM사로부터 이용가능한 PowerPC 403GC 칩이다. 프로세서(206)는 Sample의 에뮬레이션 및 시뮬레이션을 사용한 설계 검증을 위한 방법 및 장치 (Method and Apparatus For Design Verification Using Emulation And Simulation)명의 진행중인 출원 일련 no. 08/733,352에서 설명되는 상호 시뮬레이션 (co-simulation)에 사용된다. 출원 일련 no. 08/733,352의 지시 내용은 여기서 참고로 포함된다. 프로세서(206)는 또한 진단 기능으로, 또한 정보를 Mux 칩(12), 논리칩 (10, 204), 및 RAM(208) (이후 논의될)과 SGRAM(210) (이후 논의될)에 다운로드하는데 사용된다. 프로세서(206)는 VME 인터페이스 (도시되지 않은)를 통해 백플레인 (backplane) 커넥터(220)에 연결된다. 12개의 논리칩(10)은 또한 32 대 32 정적 랜덤 억세스 메모리 (RAM) 칩(208)에 연결된다. 이 RAM 칩(208)은 에뮬레이트되는 회로의 일부가 될 수 있는 대형 메모리를 실시하는데 사용된다. RAM(208)은 또한 논리칩(10)을 Mux 칩(12)에 연결시키는 선 일부에 부착된다. 이 방법에서, RAM이 사용되지 않으면, 논리칩(10) 대 Mux 칩(12) 연결은 통상적인 상호연결 기능으로 사용될 수 있고 손실되지 않는다. 특정한 네트리스트 (netlist)의 일부인 메모리를 실시하는데 RAM(208)이 필요하면, 이와 통신하는 논리칩(10)은 그에 프로그램된 RAM 제어기 기능을 갖는다.
Mux 칩(12)은 또한 백플레인 커넥터(220)와 터보 (turbo) 커넥터(202)에 연결을 갖는다. 백플레인 및 터보 연결은 또한 비-멀티플렉싱, 2 대 1 멀티플렉싱, 또는 4 대 1 멀티플렉싱될 수 있다. 터보 커넥터(202)는 두 논리 보드(200)를 함께 샌드위치형으로 전기적 연결하는데 사용된다. 두 논리 보드 사이를 한 쌍으로 직접 연결시킴으로서, 특정한 설계에 요구되는 백플레인 연결의 수가 감소될 수 있다. 백플레인 커넥터는 논리 보드의 한 엣지에 따라 고정되어야 하고, 가능한 백플레인 커넥터의 수는 이용가능한 커넥터의 종류에 의해 제한된다. 백플레인 연결이 충분하지 못하면, 분할 소프트웨어가 효과적으로 동작될 수 없게 되고, 그에 의해 보드의 논리 용량을 감소시키게 된다. 샌드위치형으로 연결된 에뮬레이션 보드는 도 13에 도시된다. 2 이하의 에뮬레이션 보드를 포함하는 더 작은 에뮬레이션 시스템을 원하면, 배치된 논리를 갖지 않는 특별한 터보 루프백 (loopback) 보드가 사용된다. 이러한 시스템에서, 특별한 터보 루프백 보드는 단순히 터보 커넥터(202)로부터 백플레인 커넥터(220)에 신호를 전달한다. 터보 루프백 보드를 사용한 구성예가 도 15에 도시된다.
부가하여, Mux 칩(12)은 각각 동기화 그래픽 RAM (SGRAM)(21)의 세트에 8개의 연결을 갖는다. 이들 SGRAM(210)은 분포된 논리 분석기의 데이터 경로를 형성하는데 사용된다. 설계 신호는 논리칩(10)과 CoSim 논리칩(204)에서 샘플링되고, Mux 칩(12)을 통해 전달되어 사용자에 의한 미래 분석을 위해 SGRAM(210)에 저장될 수 있다. 이후에는 논리 분석기가 더 설명된다.
논리칩(10)과 CoSim 논리칩(204)은 또한 이벤트 버스 (event bus)(212)와 클럭 IN (clock in) 버스(214)에 부착된다. 이벤트 버스는 논리칩(10)과 CoSim 논리칩(204)내에서부터 논리 분석기 제어 회로 (이후 설명되는 도 20a에 도시된)로 이벤트 신호를 전달하는데 사용된다. 이벤트 버스는 4개 신호로 구성되고, 8개의 이벤트 신호를 제공하도록 2 대 1 시간-멀티플렉싱된다. 이벤트 버스(212)상의 신호는 버퍼 처리되어 백플레인 커넥터(220)상의 추가 핀 (도시되지 않은)에 전달된다.
클럭 IN 버스(214)는 모든 논리칩(10)과 CoSim 논리칩(204) (이후 논의되는)에 전달되는 8개의 낮은 스큐 (low-skew) 특수 목적 클럭 네트로 구성된다. 클럭 IN 버스(214)는 미국 특허 No. 5,475,830에서 설명되는 바와 같이 클럭 신호를 분포하는데 사용된다. 클럭 IN 버스(214)로부터의 클럭은 백플레인 커넥터(220)상의 추가 핀 (도시되지 않은)에 연결된 신호(218)로부터 버퍼(216)를 통해 직접 오거나, CoSim 논리칩(204)내의 논리와 주요 클럭 신호(218)를 조합함으로서 생성될 수 있다. CoSim 논리칩(204)이 클럭 논리를 실시하는데 사용될 때, 이는 미국 특허 No. 5,475,830에서 설명된 바와 같이 "클럭 발생 FPGA"로 작용한다.
이제는 도 12를 참고로 보드간의 상호연결이 도시된다. 논리 보드(200)는 터보 커넥터(202)로 연결된 쌍으로 조립된다. 논리 보드는 백플레인 코넥터(220) (도 11에 도시된)를 통해 스위칭 백플레인 (switching backplane)(420)에 연결된다. 스위칭 백플레인(420)은 논리 보드에 대해 우측에 배치된 Mux 보드(400)로 구성된다. 논리 보드와 스위칭 보드의 배열은 Sample에 부여되고 본 출원과 같은 양수인에 지정된 미국 특허 No. 5,352,123에서 볼 수 있다. 미국 특허 No. 5,352,123은 전체적으로 여기서 참고로 포함된다. 스위칭 백플레인(420)은 또한 I/O 보드(300)에 연결된다. (도 12에서는 하나의 I/O 보드(300)만이 도시된다. 그러나, 하나 이상의 I/O 보드(300)가 사용되는 것도 본 발명의 일부로 간주된다.) I/O 보드(300)는 외부 시스템(540)이나 코어 보드 (core board)(500)에 포함된 외부 디바이스로부터 신호를 전달하고 버퍼 처리하는 기능을 행한다. 이들은 또한 에뮬레이트되는 설계가 외부 디바이스나 시스템의 부재시에도 동작될 수 있도록 모든 외부 핀에 자극 신호를 제공하는 기능을 갖는다.
I/O 보드(300)는 코어 보드(500) 및 반복기 포드 (pod)(520)를 통해 외부 시스템(540)에 연결된다. 도 12를 간략화하기 위해, 보드와 연결의 실제 수는 감소되었다. 본 실시예에서는 22개의 Mux 보드(400), 1 내지 10 쌍의 논리 보드(200), 및 8개까지의 I/O 모드(300)가 있다. 본 실시예에서, 2개 이상의 I/O 보드(300)가 사용되면, 각 추가쌍의 I/O 보드(300)에 대해 한쌍의 논리 보드(200)가 손실된다. 본 실시예에서는 각 I/O 보드(300)가 케이블로 부착된 반복기 포드(520)를 7개까지 갖는 하나의 연관된 코어 보드(500)를 갖는다. 본 실시예의 각 반복기 포드는 88개의 양방향 신호를 버퍼 처리한다.
도 13은 본 실시예 시스템의 물리적 구성을 도시한다. Mux 보드(400)는 논리 보드(200)와 I/O 보드(300)의 우측에 배치된다. 백플레인(800)은 한 측면에 Mux 보드(400)에 대한 커넥터를 갖고 다른 측면에는 논리 보드(200)나 I/O 보드(300)에 대한 커넥터를 갖는다. 도면을 간략화하기 위해, 하나의 Mux 보드(400)와 3개 쌍의 논리 보드(200)만이 도시된다. 그러나, 본 실시예에서는 사실상 22개의 Mux 보드(400)와 11개 쌍까지의 논리 보드(200)나 I/O 보드(300)가 있다. I/O 보드(300)는 커넥터(330)를 통해 코어 보드(500)에 부착된다. 코어 보드(500)는 외부 커넥터(510)를 포함하고, 이는 케이블을 통해 반복기 포드(520) 및 외부 시스템(540) (도 13에서는 도시되지 않은)에 부착된다. 전력 보드(240)는 48 volt DC 주전력원을 논리 보드에 전력을 공급하는데 필요한 3.3 V로 변환한다. 이러한 종류의 분포 전력 변환은 시간-멀티플렉싱 회로의 높은 전력 요구에 의해 필요해진다. 부가하여, 시스템은 제어 보드(600)와 CPU 보드(700) (도 20을 참고)를 포함한다. 본 실시예에서, CPU 보드(700)는 Themis Computer 등으로부터 이용가능한 VME 버스 파워-PC 프로세서 보드이다. 다른 유사한 프로세서 보드도 적절하다. 사용되는 특정한 프로세서 보드의 선택은 비용, 속도, RAM 용량, 및 다른 요소 사이의 조정에 의존한다. CPU 보드(700)는 에뮬레이션 시스템의 네트워크 인터페이스 및 전체적인 제어를 제공한다. 제어 보드(600)는 클럭 분포, 다운로드, 및 다른 보드에 대한 테스트 기능 뿐만 아니라 논리 분석기 및 패턴 발생기의 중앙화 기능 (이후 논의될 구조와 기능)을 제공한다.
주어진 에뮬레이션 시스템을 더 작게 한 버젼이 또한 구성될 수 있다. 이 시스템의 블록도는 도 14에 도시된다. 더 작은 시스템은 스위칭 백플레인(420)을 갖지 않는다. 대신에, 논리 보드(200)가 직접 함께 연결되고 I/O 보드(300)에 연결된다. 이는 시스템의 크기가 두 쌍의 논리 보드(200) 및 한 쌍의 I/O 보드(300)에 제한되기 때문에 가능하다. 백플레인 연결은 도 14의 상단에 도시된다. 각 백플레인 커넥터(220) (도 10에 도시된)로부터의 핀은 4개의 동일한 그룹으로 나뉜다. 각 그룹은 백플레인을 통해 같은 쌍에 있지 않은 두 논리 보드(200) 중 하나와 각 I/O 보드(300)에 전해진다. 이러한 연결은 논리 보드(200)의 경우 터보 커넥터(202)를 통해 제공되고 I/O 보드(200)의 경우에서는 필요하지 않기 때문에, 백플레인을 통해 같은 쌍에 있는 다른 논리 보드(200)나 I/O 보드(300)에 연결되는 것이 필요하지 않다. 도 14에 도시된 연결 패턴은 보드 사이에서 양호한 전달성을 충분히 제공하면서 높은 비용의 스위칭 백플레인(420) 사용을 피한다. 대형 시스템에서와 같이, I/O 보드(300)는 코어 보드(500) 및 반복기 포드(520)를 통해 외부 시스템(540)에 연결된다. 도면을 간략화하기 위해, 제2 I/O 보드에 대해서는 코어 보드(500), 반복기 포드(520), 및 외부 시스템(540)이 도시되지 않지만, 실제로는 주어진다. 다른 경우 사용되지 않는 백플레인과 터보 커넥터 사이의 연결을 이루는데 추가 보드의 세트를 사용함으로서, 1 내지 4개 논리 보드(200)와 1 또는 2개 I/O 보드(300)를 갖춘 작은 시스템 버젼이 구성될 수 있다. 이들 추가 보드는 도 15에 도시된 터보 루프백 보드(260) 및 백플레인 루프백 보드(280)이다. 이들 보드는 디지털 논리를 갖지 않는다. 이들은 단순히 커넥터 사이에서 신호를 전한다.
도 15에서는 하나의 논리 보드와 하나의 I/O 보드를 갖는 작은 시스템의 물리적 도면이 도시된다. 백플레인(802)은 도 14를 참고로 상술된 연결을 제공한다. I/O 보드(300)는 커넥터(330)를 통해 코어 보드(500)에 연결된다. 코어 보드(500)는 케이블을 통해 반복기 포드(520)와 외부 시스템(540) (도 15에서는 도시되지 않은)에 부착된 외부 커넥터(510)를 갖는다. 전력 보드(240)는 48 volt DC 주전력원을 논리 보드에 전력을 공급하는데 필요한 3.3 V로 변환한다. 부가하여, 소형 시스템은 도 13을 참고로 상술된 대형 시스템에서와 같이 제어 보드(600) 및 CPU 보드(700)를 포함한다. 4개 이하의 논리 보드가 사용될 때 전달 연결을 보존하기 위해, 터보 루프백 보드(260)는 논리 보드(200)의 사용되지 않은 터보 커넥터(202) (도 11에 도시된)로부터 백플레인(802)에 신호를 연결시킨다. 터보 루프백 보드(260)는 시스템에 1 또는 3개 논리 보드(200)가 있을 때 사용된다. 추가 쌍의 백플레인 루프백 보드(280)는 사용되지 않는 논리 보드 슬롯 (slot)이 있을 때 백플레인을 통해 전달 연결을 보존하도록 사용된다. 이는 시스템에 1 또는 2개 논리 보드가 있을 때 일어난다. 백플레인 루프백 보드(280)는 다른 경우 빈 백플레인 커넥터가 있을 때 신호가 손실되지 않도록 백플레인 신호 그룹 (도 14에 도시된)들을 서로 연결시킨다.
도 16에는 I/O 보드(300) 및 코어 보드(500)의 블록도가 도시된다. Mux 칩(12)의 제1 열(301)은 I/O 보드(300)상의 백플레인 커넥터(320)에 부착된다. 도면을 간략화하기 위해, 제1 열(301)에는 3개의 Mux 칩(12)만이 도시된다. 그러나, 본 실시예에서는 제1 열(301)에 14개의 Mux 칩(12)이 있다. Mux 칩(12)의 제2 열(303)은 Mux 칩(12)의 제1 열(301) 뿐만 아니라 FET (field effect transistor)(308) 및 논리칩(304)에 연결된다. 또 다시, 2개의 Mux 칩(12)만을 도시하여 도면을 간략화하였다. 본 실시예에서는 제2 열(303)에 12개의 Mux 칩(12)이 있다. Mux 칩(12)의 두 열 (301, 303)은 임의의 외부 신호가 코어 보드(500)에서 반복기 케이블 커넥터(510)의 핀에 연결될 수 있도록 충분한 전달 탄력성을 이루는데 요구된다. 논리칩(304)은 또한 동기화 그래픽 RAM (SGRAM)(302)에 부착된다. 본 실시예에서는 논리칩(304)이 FPGA이다. 비록 하나의 논리칩(304)과 하나의 SGRAM(302)만이 도시되지만, 본 실시예에서는 I/O 보드(300)에 6개의 논리칩(304)과 3개의 SGRAM(302)이 있다. 논리칩(304)과 SGRAM(302)은 외부 연결 핀에서 에뮬레이터에 자극 벡터를 구동하는 기능을 제공한다. 자극 벡터를 구동할 때, FET(308)는 off 상태로 되므로 (즉, 개방되므로), 자극은 반복기 포드(520)를 통해 커넥터(510)에 부착될 수 있는 외부 시스템으로부터의 신호와 충돌되지 않는다. 자극 벡터를 구동하지 않을 때는 논리칩(304)의 핀이 삼중상태로 되고, FET(308)는 커넥터(510)상의 신호가 제2 열의 Mux 칩(303)으로부터 신호를 수신 또는 구동하도록 on 상태로 된다 (즉, 폐쇄된다). 본 실시예에서는 논리칩(304)이 Xilinx Corporation, San Jose, California로부터 이용가능한 XC5215이지만, 다른 프로그램가능한 논리칩도 만족스러운 결과로 사용될 수 있다. 도 16에 도시된 구성성분에 부가하여, I/O 보드(300)는 VME 인터페이스를 통해 백플레인 커넥터(320)에 연결된 프로세서 칩 (도시되지 않은)을 포함한다. 본 실시예에서는 이 프로세서 칩이 IBM사의 PowerPC 403GC이지만, 다른 마이크로프로세서 칩도 만족스러운 결과로 사용될 수 있다. 프로세서 칩은 프로세서 버스(310)를 통해 논리칩(304)에 부착된다. 프로세서 버스(310)는 자극 정보를 SGRAM(302)에 업로드 (upload)하도록 동작된다. 프로세서는 진단 기능에, 또한 Mux 칩(12), 논리칩(304), 및 SGRAM(302)으로부터 정보를 업로드 및 다운로드하는데 사용된다.
커넥터(330)는 코어 보드(500)를 I/O 보드(300)에 부착한다. FET(308)로부터 오는 논리 신호에 부가하여, 이 코넥터(330)는 JTAG 신호를 수신하고 전기적으로 VME 버스에 연결된다. JTAG 신호는 커넥터(510)로 플러그될 수 있는 반복기 포드(520)를 다운로드 및 테스트하기 위한 것이다. 본 실시예에서는 VME 버스가 코어 보드(500)와 사용되지 않는다. 그러나, VME 버스는 커넥터(330)로 플러그될 수 있는 다른 종류의 보드와 사용될 수 있는 것으로 간주된다. 예를 들면, RAM(208) (도 11에 도시된)으로 고정되는 것 보다 더 큰 메모리를 에뮬레이트하는 기능을 제공하기 위해 대형 메모리 보드가 커넥터(330)로 플러그될 수 있다고 간주한다.
이제는 도 17을 참고로 Mux 보드(400)의 블록도가 도시된다. Mux 칩(12)은 분포된 형태로 백플레인 커넥터(420)에 부착된다. 도 17의 도면은 4개의 Mux 칩(12)만을 도시하도록 간략화되었다. 그러나, 본 실시예에서는 사실상 Mux 보드(400)에 7개의 Mux 칩이 있다. 더욱이, Mux 칩(12)에 대해 17에 도시된 것 보다 더 많은 다수의 연결이 있다. 이들 추가 연결은 도시된 것과 유사하게 배열된다. 도 17에 도시된 Mux 칩(12)에 부가하여, Mux 보드(400)는 Mux 칩(12)이 다운로드되고 테스트되는 것을 허용하는 백플레인 커넥터(420)에 부착된 JTAG 인터페이스 (도시되지 않은)를 포함한다.
도 17의 Mux 보드는 비확장가능한 에뮬레이션 시스템에 적절하다. 그러나, 때로는 더 큰 용량의 에뮬레이션 시스템을 형성하도록 수개의 에뮬레이션 시스템을 연결시키는 것이 바람직하다. 이 경우에는 확장가능한 버젼의 Mux 보드(400)가 사용된다. 확장가능한 Mux 보드(402)의 블록도는 도 18에 도시된다. Mux 칩(12)의 제1 열(404)은 백플레인 커넥터(420)에 전기적으로 연결된다. 도면은 제1 열(404)에 4개의 Mux 칩(12)만을 도시하도록 간략화되었다. 그러나, 본 발명에서는 제1 열(404)에 10개의 Mux 칩(12)이 있다. Mux 칩(12)의 제1 열(404)은 전기적으로 Mux 칩(12)의 제2 열(406)과 터보 커넥터(430)에 연결된다. Mux 칩(12)의 제2 열(406)은 또한 전기적으로 터보 커넥터(430)와 외부 커넥터(440)에 연결된다. 도 18에서는 제2 열(406)에 2개의 Mux 칩(12)만이 도시되고 2개의 외부 커넥터(440)만이 도시된다. 그러나, 본 실시예에서는 제2 열(406)에 5개의 Mux 칩(12)이 있다. 더욱이, 본 실시예에서는 6개의 외부 커넥터(440)가 있다. 본 실시예의 각 외부 커넥터(440)는 92개의 I/O 핀을 갖는다. Mux 보드(402)는 터보 커넥터(430)를 통해 함께 부착되는 쌍으로 조립된다. 터보 커넥터(430)는 한쌍의 Mux 보드(402)와 한쌍의 논리 보드(200) 사이에 실효 교차 영역을 확장시키도록 동작된다. 터보 커넥터(430)가 없으면, 외부 커넥터(440)와 논리 보드(200) 사이의 실효 전달성을 위한 교차 영역이 너무 작다.
도 19를 참고로, 에뮬레이션 시스템에서 사용자 클럭이 분포되는 방식이 설명된다. 사용자 클럭의 분포는 에뮬레이션 시스템 설계에서 중요하다. 미국 특허 No. 5,475,830에서 논의된 바와 같이, 사용자 클럭과 데이터 신호가 외부 시스템(540) (외부 시스템(540)은 도 12 및 도 14에 도시된다)에서 동시에 변한다고 가정하면, 사용자 클럭이 데이터 신호 이전에 에뮬레이션 보드(200)상의 논리칩(10)에 도착하도록 보장하는 것이 필요하다. 이 요구조건은 데이터 신호를 지연시킴으로서 만족될 수 있다. 그러나, 이러한 해결법은 에뮬레이션 시스템의 최대 동작 속도를 저하시킨다. 보다 바람직한 다른 방법은 지연이 필요한 경우 최소로 데이터 신호에 부가될 필요가 있도록 사용자 클럭 분포 네트워크를 가능한한 빠르게 만드는 것이다.
도 19는 바람직한 하드웨어 에뮬레이션 시스템에 대한 클럭 분포를 도시한다. 클럭은 제어 보드(600)상의 클럭 커넥터(620)를 통하거나 제어 보드(600)상의 다중박스 (multi-box) 클럭 커넥터(630)를 통해, 또는 코어 보드(500)의 커넥터(510)에서 정상 신호로 시스템에 들어갈 수 있다. 논의된 바와 같이, 코어 보드(500)는 I/O 보드(300)에 부착된다. 간략화하기 위해, 도 19에서는 하나의 커넥터(510)만이 도시된다. 그러나, 바람직한 실시예에서는 각 코어 보드(500)에 7개의 커넥터(510)가 있다. 또한, 시스템은 다수의 I/O 보드/코어 보드 조합을 포함할 수 있다. 도 12 및 도 14를 참고로 상술된 바와 같이, 커넥터(510)는 외부 시스템(540)에 연결된 반복기 포드(520)에 부착된다. 클럭 커넥터(630)가 클럭을 입력하는데 사용되면, 커넥터(620)는 또한 케이블을 통해 외부 시스템(540)에 부착된다. 클럭 커넥터(620)는 코어 보드(500)상의 커넥터가 사용자에게 보다 쉬운 방법을 제공하면서 클럭이 에뮬레이션 시스템에 들어가는 보다 신속한 방법을 제공한다.
코어 보드(500)상의 커넥터(510)는 도 16을 참고로 상술된 바와 같이 커넥터(330)와 FET(308)를 통해 I/O 보드(500)에서 Mux 칩(12)의 제2 열(303)에 연결된다. Mux 칩(12)의 제2 열(303)은 상술된 다른 연결에 부가하여 백플레인 커넥터(320)상의 전용 클럭 핀에 연결된다. 바람직한 실시예에서는 이러한 핀이 16개 있다. I/O 보드 백플레인 커넥터(320)로부터, 클럭은 백플레인 (800 또는 802)을 통해 제어 보드(600)에 연결된다 (도 13을 참고). 제어 보드(600)에서, Mux 칩(12)은 다른 모든 전위 소스로부터 클럭의 조합을 선택하는데 사용된다. 시스템은 32개까지의 개별 클럭 소스를 가질 수 있다. 이들 중 8개는 에뮬레이션 보드(200)의 쌍으로 사용된다. 이는 예를 들어 하나 이상의 칩 설계가 단일 하드웨어 에뮬레이션 시스템에서 에뮬레이트되고 있을 때 다른 쌍의 에뮬레이션 보드(200)가 요구되는 바에 따라 다른 클럭을 갖도록 허용한다. 클럭은 프로그램가능한 지연 소자(604)와 버퍼(614)를 통해, 또한 백플레인 (800 또는 802)을 통해 에뮬레이션 보드(200)로 전해진다. 도 11을 참고로 상술된 바와 같이, 에뮬레이션 보드(200)상의 클럭은 논리칩(10)으로 가기 이전에 버퍼(216) 또는 클럭 발생 논리칩(204) (즉, CoSim 논리칩)을 통해 전해질 수 있다.
제어 보드(600)상의 논리 분석기 클럭 발생기 논리칩(602)도 또한 클럭을 발생할 수 있다. 이는 전형적으로 테스트 벡터 (test vector)로 시스템을 운행할 때 일어난다. 클럭 RAM(612)으로부터의 데이터는 논리 분석기 클럭 발생기 논리칩(602)으로 프로그램된 상태 기계 (state machine)로 입력되고, 이는 0으로의 복귀 (return-to-zero), 0으로의 비복귀 (non-return-to-zero), 2 위상 비오버래핑 (two-phase non-overlapping) 등과 같은 다른 클럭 패턴이 생성되도록 허용한다. 이러한 상태 기계의 설계는 제어 논리 설계의 기술에 숙련된 자에 의해 이미 공지되어 있으므로, 여기서는 더 설명되지 않는다. 논리 분석기 클럭 발생기 논리칩(602)으로부터, 32개의 발생 클럭은 클럭 선택 Mux 칩(12)에 통신된다. 바람직한 실시예에서, 논리 분석기 클럭 발생기 논리칩(602)은 Xilinx Corporation에 의해 제작된 XC4036XL 디바이스이지만, 다른 프로그램가능 논리 디바이스도 만족스러운 결과로 사용될 수 있다.
다중박스 클럭 커넥터(630)는 입력 클럭이나 출력 클럭으로 동작할 수 있다. 방향은 버퍼(608)에 의해 제어된다. 다중박스 에뮬레이션 시스템에서, 즉 하나 이상의 독립형 에뮬레이션 시스템으로 구성된 에뮬레이션 시스템에서, 한 박스는 마스터 (master)로 지정되고 다른 것은 슬래이브 (slave)로 지정된다. 마스터 박스는 다중박스 클럭 커넥터(630)를 통해 다른 모든 슬래이브 에뮬레이션 시스템에 입력되는 다중박스 클럭 커넥터(630)에서 클럭을 만든다. 다중박스 시스템에서, 지연 소자(604)는 마스터 박스와 슬래이브 박스 사이의 피할 수 없는 케이블 지연을 보상하도록 마스터 박스에서 프로그램된다.
종래 기술에 숙련된 자는 도 19가 명확성을 위해 상당히 간략화되었고 도시되지 않은 상호연결 및 구성성분이 다수 있음을 인식하게 된다. 이들 추가 구성성분과 상호연결의 필요성은 설계 선택의 문제이다.
이제는 도 20을 참고로 하드웨어 에뮬레이션 시스템의 제어 구조가 논의된다. 이전 하드웨어 에뮬레이션 시스템은 일반적으로 불충분한 처리 기능을 갖는다. 이는 데이터를 시스템에 전달하거나 그로부터 전달받을 때, 설계 데이터를 시스템으로 로딩할 때, 또한 하드웨어 진단을 운행할 때 오랜 지연을 제공하게 된다. 본 발명의 바람직한 실시예에서는 이러한 문제점을 완화하기 위해 두 레벨의 처리 설계를 사용한다. 메인 프로세서(700)는 제어 보드(600)에 부착된다. 바람직한 실시예에서, 프로세서(700)는 Themis Computer로부터 이용가능한 파워 PC VME 근거의 프로세서이지만, 다른 유사한 카드도 만족스러운 결과로 사용될 수 있다. 프로세서(700)는 제어 보드(600)에서 Ethernet 또는 VME 버스(650)에 전기적으로 연결된다. VME 버스(650)는 인터페이스 (도 20에서는 도시되지 않은)를 통해 백플레인 (800 또는 802)과 논리 보드(200) 및 I/O 보드(300)에 전기적으로 연결된다. VME 버스(650)는 또한 제어 보드(600)상의 JTAG 인터페이스(660)와 백플레인(800)을 통해 Mux 보드(400)에 연결된다.
각 논리 보드(200) 및 I/O 보드(300)는 VME 인터페이스 및 메모리를 갖춘 로컬 프로세서 (local processor)를 갖는다. 이 회로는 논리 보드(200)를 참고로 논의되지만, 유사한 회로가 각 I/O 보드(300)에 존재한다. 프로세서(206) (도 11에서 앞서 도시된)는 VME 인터페이스(222)를 통해 백프레인 (800 또는 802)상의 VME 버스(650)에 전기적으로 연결된다. 이는 또한 제어기(221)에도 전기적으로 연결된다. 바람직한 실시예에서, 제어기(221)는 Xilinx Corporation으로부터 이용가능한 수개의 XC5215 FPGA로 구성된다. 제어기(221)는 논리 보드(200)상의 다른 구성성분에 JTAG 테스팅 신호를 제공한다. 부가하여, 플래쉬 (flash) EEPROM(224)과 동적 RAM(226)과 같은 다양한 디바이스가 프로세서(206)에 연결된다. 프로세서(206)는 보드 레벨 진단을 행할 때, 구성 데이터를 논리칩(10)에 로드시킬 때, 또는 데이터를 메모리 (208, 210) (도 11에서 앞서 도시된)에 전달하고 그로부터 전달받을 때 독립적으로 동작될 수 있다.
이제는 도 20a를 참고로 본 실시예에 대한 논리 분석기 회로가 상세히 논의된다. 논리 분석기가 분포된다. 이는 중앙화된 기능이 회로 보드(600)에 포함되면서 논리 분석기 부분이 각 논리 보드(200)에 포함되는 것을 의미한다. 이벤트 (event), 즉 에뮬레이트되는 설계에서 신호 상태의 조합은 논리 보드(200)상의 논리칩 (10, 204) 내부에서 발생된다. 이들은 쌍으로 조합되어 신호(236)로 출력되고, 이어서 특정한 이벤트 논리칩(232) (도 20a에서 AND 게이트(232)로 도시된)에서 함께 AND 처리된다. 결과의 조합 이벤트 신호는 플립플롭(230) (간략하게, 도 20a에서는 2개의 플립플롭(230)만이 도시된다)에 의해 8개 신호로 분리된다. 분리된 이벤트 신호(240)는 백플레인 (800 또는 802) (도 20a에서는 도시되지 않은)을 통해 제어 보드(600)로 전해지고, 여기서 다시 AND 게이트(678) (논리칩의 일부인)에 의해 다른 보드나 다른 박스로부터의 이벤트와 AND 처리된다. 커넥터(670)는 다른 에뮬레이션 박스로부터의 이벤트 신호에 작용한다. 최종적인 이벤트 신호는 트리거 조건 및 조건부 수용 조건을 계산하고 논리 보드(200)에서 데이터의 수용을 제어하는 수용 인에이블 신호(238)를 발생하는 제어 보드(600)상의 트리거 발생기 논리칩(674)으로 전해진다. 트리거 발생기 논리칩(674)의 출력은 버퍼(671)를 통해 커넥터(672)에 전달되고 또한 지연 소자(676)를 통과하게 된다. 지연 소자(676)의 출력은 버퍼(673)에 의해 버퍼처리되고, 백플레인 (800 또는 802)을 걸쳐 논리 보드(200)상의 논리 분석기 메모리 제어기(234)로 전달된다. 제어 보드(600)는 또한 트레이스 및 기능적 테스트 클럭과 다른 논리 분석기/패턴 발생기 신호를 발생한다.
이제는 도 20b를 참고로 논리 분석기 신호에 대한 데이터 경로가 도시된다. 데이터 신호는 논리칩 (10, 204)에서 래치되고 에뮬레이션 보드(200)상의 동기화 그래픽 RAM (SGRAM)(210)으로 주사된다. 논리 분석기 데이터 경로는 모든 논리 보드(200)에 걸쳐 분포된다. 논리 보드(200)상의 각 Mux 칩(12)은 256Kx32 SGRAM(210)에 연결되는 8개 핀을 갖는다. SGRAM(210)는 에뮬레이션이 논리 분석기 데이터를 저장하도록 운행되는 동안 고속으로 동작된다. 데이터는 아래 도표에 도시된 바와 같이 원하는 논리 분석 속도, 채널 깊이, 및 프로브 (probe) 신호의 수에 의존해 2 대 1 내지 64 대 일로 시간-멀티플렉싱된다:
논리 분석기 균형조건
최대 속도 깊이 채널/논리 보드 시간-mux 계수
16 MHZ8 MHZ4 MHZ2 MHZ1 MHZ.5 MHZ 128 K64 K32 K16 K8 K4 K 8641,7283,4566,91213,82427,648 (모든 신호) 2-14-18-116-132-164-1
상기에 도시된 최대 속도값은 대략적인 것으로, 논리 분석기 설계와 멀티플렉싱 클럭 속도에 의존해 변하게 된다.
.5 MHZ 비율에서는 에뮬레이트되는 설계내의 모든 플립 플롭이나 래치를 동시에 프로브 (probe)하는 것이 가능하도록 충분한 수의 채널이 이용가능하다. 신호가 "프로브"될 때는 그 소자나 노드의 신호값이 판독된다. 일반적으로, 이 값은 메모리 소자 (SGRAM(210))에 저장된다. 소프트웨어에서 조합 신호를 재구성함으로서, 사용자는 프로브를 이동시키거나 에뮬레이터를 재시동하지 않고 트리거 상태 주위에 수천개의 클럭 동안 신호 세트를 관찰할 수 있다. 조합 신호를 프로브하길 원할 때, 소프트웨어는 설계 네트리스트를 조사한다. 프로브된 저장 소자 (즉, 플립플롭이나 래치) 또는 설계의 외부 입력에서 종료될 때까지 원하는 신호에 이르는 각 조합 논리 경로가 역으로 추적되는 논리콘 (logic cone)이 추출된다. 원하는 신호에 대한 논리 기능은 그에 관련된 모든 저장 소자나 외부 입력에 대해 유도된다. 최종적으로, 원하는 신호의 값은 모든 저장 노드 및 외부 입력에 대해 앞서 저장된 값을 사용한 논리 기능을 평가함으로서 매 순간 계산된다. 논리 기능은 논리콘에 대한 입력 중 하나가 변하는 각 지점에서 평가된다. 이는 설계 더버그 (debug) 소프트웨어의 일부로 행해진다.
예를 들면, 도 20d에서, 프로브된 신호(E)는 저장 소자 B, C, D, 및 설계 입력 A에서 종료되는 조합 논리콘을 추출함으로서 계산될 수 있다. 신호 E에 대한 식은 신호 A, B, C, D가 변할 때마다 평가된다. 신호 E의 파형은 물리적인 프로브가 그에 배치된 것처럼 정확하게 디스플레이될 수 있다. 이러한 전체적인 시계는 복잡한 설계 문제점에 대한 디버깅의 속도를 많이 향상시킨다. 전체적인 시계는 또한 논리칩 (10 또는 204)에 대한 플립플롭의 수가 제한되는 경우 더 높은 주파수에서 이용가능해질 수 있다.
더 높은 속도에서, 즉 0.5 MHZ 보다 높은 속도에서, 사용자는 어느 신호가 프로브되는가를 지정하여야 한다. 그러나, 각 논리 보드(200)가 자체의 논리 분석기 메모리(210)를 갖기 때문에, 프로브되는 신호를 변화시키는 것이 신속하다. 그 이유는 종래 기술의 에뮬레이션 시스템에서와 같이 백플레인에 걸쳐 프로브가 전해질 필요가 없기 때문이다.
다시 도 20b를 참고로, 각 논리칩 (10 또는 204)내에서, 추가 논리 회로(2000)는 논리칩 (10 또는 204)으로 프로그램되는 사용자의 설계에 부가된다. 고객 설계 논리칩이 사용되면, 이 논리 회로(200)는 칩으로 설계될 수 있다 (즉, 하드웨어-와이어 처리될 수 있다). 프로브되는 신호의 수에 의존해 다수의 전용 주사 레지스터 (scan register)가 부가된다. 주사 레지스터의 최대 깊이는 상기의 도표에 따라 결정된다. 각 전용 주사 레지스터는 또한 주사 체인 (scan chain)으로 공지된다. 2 대 1 멀티플렉서(2005)는 각 주사 플립플롭(2004) 사이에 배치된다. 각 멀티플렉서(2005)의 출력은 이어지는 주사 플립플롭(2004)의 입력(D)으로 주어진다. 각 멀티플렉서(2005)의 제1 입력은 사용자의 설계에서 노드로 제공된다. 각 멀티플렉서(2005)의 제2 입력은 선행하는 주사 플립플롭(2004)의 출력 Q으로 제공된다. 멀티플렉서(2005)의 선택 입력은 트레이스 클럭 (trace clock)(2002)으로, 그 기능은 이후 논의된다. 주사 플립플롭(2004)은 Mux 클럭 신호(44)에 의해 클럭 조정된다. 그와 함께, 주사 플립플롭(2004)과 멀티플렉서(2005)의 직렬 연결은 주사 레지스터 또는 주사 체인을 형성한다. 프로브되는 신호의 수와 주사 체인의 길이에 의존해, 각 논리칩 (10 또는 204)은 0, 1, 또는 다수의 주사 체인을 갖게 된다. 소정의 칩에서 주사 체인의 수는 프로브되는 신호나 플립플롭의 수에 의존한다. 이후 설명될 바와 같이, 소프트웨어는 체인의 수를 최소화하고 칩 루트를 간략화하도록 주사 체인에 신호를 지정하게 된다. 바람직한 실시예에서는 에뮬레이트되는 설계에서 모든 플립플롭 또는 래치를 프로브하기 위해 논리칩 (10 또는 204) 당 최대 12개의 주사 체인과 12개의 I/O 핀이 요구된다. 가장 신속한 가능 논리 분석기 동작 속도를 이루기 위해, 주사 체인과 SGRAM(210)은 시간-멀티플렉싱 주파수의 2배로 동작한다. 시간-멀티플렉싱 클럭의 매 싸이클마다 한 비트의 데이터가 각 주사 출력 핀(2006)에서 출력된다.
이제는 도 20c를 참고로 분석기 이벤트가 논리 보드(200)에 분포된다. 이는 백플레인 (800 또는 802)에 걸쳐 이벤트에 관한 설계 신호가 전해질 필요성을 없앤다. 이벤트는 논리 보드(200)에서 각 논리칩 (10 또는 204)으로 삽입된 추가 전용 논리(2000)를 사용해 검출된다.
이벤트에 관한 신호는 도 20b에 앞서 도시되고 논리 분석기 데이터에 대해 사용되는 것과 똑같은 주사 플립플롭(2004)에 의해 래치된다. 이들 신호는 8개 이벤트 신호를 형성하도록 와이드 (wide) 엣지 디코더(2012)를 사용해 함께 AND 처리되는 CLB 메모리(2018) (CLB 메모리는 논리칩 (10, 204)에서 이용가능한 메모리이다)를 구비한 JTAG 프로그램가능 엣지 검출기로 전해진다. 각 논리칩 (10, 204)내의 8개 이벤트 신호는 멀티플렉서(2020)를 사용해 한 핀으로 둘이 조합되고, 다른 FPGA로부터의 이벤트 신호와 다시 AND 처리되어 에뮬레이션 보드에 이벤트 신호(236) (도 20a에도 도시된)로 출력된다. 보드 레벨 이벤트 신호는 백플레인에 걸쳐 제어 보드로 전송되고, 여기서 다른 에뮬레이션 보드 및 다른 박스로부터의 이벤트 신호와 AND 처리된다. 결과의 시스템 와이드 이벤트 신호는 제어 보드상의 트리거 논리칩(674)으로 가고, 여기서 수용 인에이블 및 다른 논리 분석기 제어 신호를 발생하는데 사용된다.
이벤트에 관한 신호는 에뮬레이션 시스템에 연결된 워크스테이션에서 앞서 사용자에게 디스플레이되는 형태를 기록함으로서 컴파일 이전에 에뮬레이션 시스템의 사용자에 의해 정의될 수 있다. 이것이 행해지면, 필요한 모든 이벤트 논리가 고정되게 허용하도록 컴파일 처리 동안 논리칩 (10, 204)에서 충분한 구성가능 논리 블록 (CLB) (CLB는 논리칩 (10, 204)에서 기능을 실시하는데 사용되는 논리적 설립 블록이다)이 예정된다. 신호의 수는 용량에 최소의 충격만을 갖도록 (대략 신호 당 4개의 CLB) 미리 정의될 수 있다. 새로운 신호는 또한 전체적인 컴파일이 완료된 이후 부가될 수 있다. 이는 추가 엣지 검출기를 생성하고 새로운 신호를 전하도록 증가된 재컴파일과 재다운로드를 요구한다. 일단 이벤트에 대해 모든 신호가 정의되면, 사용자는 에뮬레이션을 운행하면서 이벤트 조건을 탄력적으로 변화시킬 수 있다. 에뮬레이션을 중단시키지 않고 브레이크포인트 (breakpoint), 트리거 조건, 및 조건부 수용 조건이 수정될 수 있고 논리 분석기가 재시작될 수 있다. 이는 이벤트 논리를 셋업하는데 JTAG 프로그래밍을 사용함으로서 가능해진다.
도 20c는 모든 이벤트 및 주사 논리가 삽입된 논리칩 (10 또는 204)을 도시한다. 설계는 주사 플립플롭(2004) 및 멀티플렉서(2005)로 구성된 주사 레지스터와, 플립플롭(2010), JTAG 인터페이스 (2016, 2014), 엣지 검출기(2018)와 와이드 엣지 디코더(2012)의 세트로 구성된 이벤트 레지스터로 나뉜다.
이벤트 신호는 논리 분석기 데이터가 쉬프트됨에 따라 그 내용이 변하기 때문에 주사 플립플롭(2004)에 저장될 수 없다. 그래서, 이벤트 플립플롭(2010)은 이벤트에 관한 모든 신호의 현재 및 이전 상태를 기억하는데 사용된다. 이벤트 레지스터(2010)는 트레이스 클럭 신호(2002) (이후 논의될)에 의해 주사 레지스터(2004)가 로드된 이후에 다음 주사 클럭에서 한번 클럭 조정된다. 다른 방법으로, 주사 레지스터(2004)는 병렬 쉐도우 레지스터 (parallel shadow register)가 될 수 있고, 주사 데이터를 주사 출력 핀에 로드시키는데 삼중상태 버퍼가 사용될 수 있다.
이벤트 플립플롭(2010)으로부터의 출력은 엣지 검출기(2018)의 입력으로 사용된다. 엣지 검출기(2018)는 이중 포트의 CLB 메모리로 구성된다. 각 CLB 메모리는 두 입력 신호에 대해 원하는 레벨/엣지 검출을 실행하도록 로드되고 하나의 이벤트 출력을 만든다. 한 이벤트에 속하는 모든 CLB 메모리로부터의 출력은 이 논리칩(10)에 대한 하나의 이벤트 신호를 형성하도록 전용 와이드 디코더(2012)를 사용해 함께 AND 처리된다. 이벤트 신호는 멀티플렉서(2020)를 사용해 조합되고 I/O 핀에서 삼중상태 버퍼(2022)로 출력된다. 임의의 이벤트에 사용자 신호가 필요할 때마다, 이는 모드 8개 이벤트로 부착되어 운행시 이벤트 정의가 변화될 수 있다.
엣지 검출기(2018)에서 사용되는 CLB 메모리는 JTAG 버스를 통해 프로그램된다. 이는 바람직한 실시예 논리칩 (10, 204)의 이중 포트 메모리 특성을 사용해 카운터(2016)와 디코더(2014)로 행해진다. 많은 수의 이벤트 회로에 대해, 디코더(2014)로부터 선택 신호를 생성하고 전하는 것은 논리칩(10) 게이트 용량의 상당 부분을 차지할 수 있다. 다른 방법으로, 쉬프트 레지스터는 모든 엣지 검출기 메모리(2018)를 포함해 생성될 수 있다. 그러나, 이러한 다른 방법은 랜덤 억세스를 방해한다.
이벤트에 관한 각 신호는 대략적으로 4개의 CLB와 JTAG 인터페이스에 대한 작은 양의 오버헤드 (overhead)를 요구한다. 신호가 부가될 때마다, 필요한 논리는 8개 이벤트의 일부 또는 그 모두로 사용되게 허용하도록 삽입된다고 가정한다. 어느 이벤트에 대해 신호가 사용되었나를 정확하게 사용자가 지정하면, CLB의 1/2만이 요구되지만, 이는 에뮬레이션이 운행되는 동안 이벤트 조건을 변화시키게 하는 기능을 상당히 제한하게 된다.
각 신호/이벤트 조합에 대한 엣지 검출 메모리(2018)는 다음의 조건 중 하나를 검출하도록 프로그램된다:
이벤트 조건
연상기호 설명
A = 0A = 1A = 0 & B = 1A = 1 & B = 0A xor BA = 0 & B = 0A = 1 & B = 1A xnor B0 01FRES0S1S- 0 레벨1 레벨하강 엣지상승 엣지임의의 엣지0에서 안정1에서 안정1 또는 0에서 안정신호를 사용하지 않음
논리 분석기 싸이클은 트레이스 클럭 신호(2002)로 시작된다. 트레이스 클럭(2002)은 철저하게 제어되는 신호가 아니다. Mux 클럭 신호 (MUXCLK)(44)의 상승 엣지에서 유효한 것만을 보장한다. 트레이스 클럭(2002)은 데이터의 동기화 샘플이 모든 주사 체인에 저장되게 한다. 이는 또한 이벤트 계산을 시작하게 한다. 보드 레벨 이벤트는 제어 모듈(600)로 전달되고, 여기서 함께 AND 처리되어 트리거 발생기 상태 기계(674)를 제어하는데 사용된다. 수회의 트레이스 클럭 주기 이후에, 트리거 발생기는 논리 보드(200)에서 SGRAM(210)에 데이터를 기록하는 것을 제어하는 수용 인에이블 신호(238)를 만든다. 이어서, 회로는 다음 트레이스 클럭(2002) 때까지 비활성 상태를 유지한다.
논리 분석기 데이터는 각 에뮬레이션 보드의 RAM에 저장된다. 상술된 바와 같이, 각 논리 보드(200)는 54개 Mux 칩(12)을 포함하고, 이들 각각은 SGRAM(210)에 연결된 8개의 핀을 갖는다. 그래서, RAM에는 54 * 8 = 432개의 데이터 채널이 있다. 논리 분석기 데이터는 프레임 (frame)이라 칭하여지는 기본 단위로 저장된다. 프레임은 각 트레이스 클럭(2002)에 이어서 발생되고, 논리칩 (10 또는 204) 주사 체인으로부터 한번 쉬프트된 모든 데이터로 구성된다. 프레임은 2 내지 64 RAM 위치로 채워지고, 2 내지 64개 Mux 클럭 신호 (MUXCLK) 싸이클이 발생되게 한다. 전형적인 프레임은 다음과 같다:
데이터 채널 (432)
프레임 0 데이터 0
데이터 1
데이터 2
데이터 3
프레임 1 데이터 0
데이터 1
데이터 2
데이터 3
최소 프레임은 단 2개의 RAM 위치만을 취한다. 프레임 길이는 항상 2의 배수이다. 그러므로, 정식적인 길이는 2, 4, 8, ..., 64 RAM 위치이다. SGRAM(210) 타이밍 요구조건을 만족시키도록, 프레임내의 순차 기록은 마주 대하는 메모리의 뱅크 (bank)로 이루어진다. 최소 크기의 프레임으로, 한 워드 (word)의 데이터는 낮은 RAM 뱅크에 저장되고 한 워드는 높은 RAM 뱅크에 저장된다.
논리 보드 메모리는 256K 워드의 깊이이다. 메모리는 동일하게 32개의 자체 포함되는 블록으로 나뉘고, 이들 각각은 8192 워드를 갖고 프레임 길이에 의존해 4096 내지 128개 프레임을 포함할 수 있다. 블록은 고정된 길이이고, 항상 8K 워드 경계에서 시작된다. 블록내에서, 프레임은 랜덤한 순서로 저장될 수 있지만, 블록 사이에서는 프레임이 오버랩되지 않는다. 나중 블록으로부터 모든 프레임은 초기 블록으로부터의 모든 프레임 보다 더 높은 시간스탬프 (timestamp)값을 갖게 된다.
논리 보드 메모리(210)의 깊이는 이용가능한 메모리 칩의 깊이와 설계자 선택에 의존한다. 더 큰 SGRAM이 이용가능해짐에 따라, 미래에는 더 깊은 메모리가 사용될 수 있다.
시간스탬프값은 프레임이 논리 보드(200)에서 저장될 때마다 제어 보드(600)상의 클럭 RAM(612) (도 19에 도시된)에 저장된다.
논리 분석기는 조건부 수용 옵션을 지지한다. 이는 이벤트 신호 중 하나의 값 및/또는 트리거 상태 기계의 현재 상태에 의존해 각 프레임이 메모리로 기록되거가 기록되지 않을 수 있음을 의미한다. 조건부 수용은 의미있는 데이터만이 저장되므로 메모리의 보다 효과적인 사용을 허용한다. 조건부 수용은 제어 보드(600)에서 발생된 수용 인에이블 신호(238)에 의해 제어된다. 수용 인에이블 신호를 발생한 트레이스 클럭(2002) 이후에는 대략 4개의 트레이스 클럭과 같은 파이프라인 지연 (pipeline delay)이 있다.
지연된 수용 인에이블 신호 때문에, 데이터가 이용가능할 때 이것이 저장되도록 가정되는가 여부를 결정하는 것이 가능하지 않다. 그러므로, 지연된 수용 인에이블 신호가 양호하지 않았음을 나타내면, 데이터는 항상 메모리에 저장되고 이후 오버라이트 (overwrite)된다. 이는 결과적으로 데이터가 랜덤한 순서로 저장되게 한다. 정확한 데이터 순서는 클럭 RAM(612)에 저장된 시간스탬프를 분류하고 포인터의 세트를 각 논리 보드 프로세서(206)에 분포시킴으로서 논리 분석기가 중단된 이후 회복된다. 포인터는 각 순차 데이터 샘플의 물리적인 메모리 위치를 나타낸다. 메모리 어드레스 카운터의 랩어라운드 (wrap-around)를 처리할 필요가 있기 때문에, 순서에서 벗어난 데이터는 메모리의 한 블록으로 제한된다. 가장 오래된 데이터의 블록은 어드레스 카운터가 다시 블록의 제1 위치로 기록되는 한 버려져야 한다.
제어 보드상의 논리 분석기 제어 논리칩(674)은 또한 각 블록이 기록된 이후 (총 160 비트) 5 비트의 데이터가 저장되는 블록 레지스터를 갖는다. 이들 비트 중 4개는 마지막으로 기록되는 4개 프레임 각각의 수용 인에이블 신호 값이다. 나머지 한 비트는 블록이 분류된 순서로 기록되었나 여부를 지정한다. 이는 수용 인에이블이 블록 동안 각 트레이스 클럭에 유효하였다는 것과 동일하다.
블록이 오버랩되지 않게 하기 위해, 각 블록에서 최종 4개 프레임은 항상 수용 인에이블 신호의 상태에 관계없이 기록된다. 이들 최종 4개 프레임은 양호한 데이터를 포함하거나 포함하지 않을 수 있다. 제어 모듈 프로세서는 데이터가 양호한가 여부를 보도록 블록 레지스터에서 대응하는 수용 인에이블 비트를 조사한다. 그러므로, 한 블록에서 실제 데이터 프레임의 수는 4 만큼씩 변하게 된다.
이는 에뮬레이션 보드에 대한 포인터 세트를 생성할 때 고려될 필요가 있다. 논리 분석기가 중단되기 이전에 저장된 데이터 중 최종 4개 워드는 양호한 데이터를 포함하거나 포함하지 않을 수 있다. 이는 논리 분석기가 중단된 이후 수용 인에이블 파이프라인을 블록 레지스터로 플러싱 (flushing)함으로서 결정될 수 있다.
제어 모듈 프로세서(700)는 논리 분석기 제어칩(674)으로부터 논리 분석기가 중단되기 이전에 저장된 최종 프레임의 어드레스를 판독할 수 있다. 이는 기록된 최종 데이터 블록을 결정하는데 사용된다. 제1 데이터 블록은 어드레스 카운터가 오버런 (overrun)되는 경우 블록 0 또는 다음으로 높은 블록이다. 처음으로 어드레스 카운터가 오버런될 때 설정되는 하나의 추가 상태 비트가 필요하다.
논리 분석기가 중단될 때 기록된 최종 데이터 블록은 어드레스 카운터의 이전 랩어라운드 동안 기록된 일부 오래된 프레임을 포함할 가능성이 있다. 이들은 없애져야 한다. 없애지는 프레임은 시간스탬프 값으로 분류하고 제1 데이터 블록에서 최초 시간스탬프 보다 더 앞선 시간 스탬프를 갖는 프레임을 없앰으로서 결정될 수 있다.
예를 들어, 프레임 길이가 1 (2 내지 64 대신에)이라 가정하면, 블록 당 8개의 프레임이 있고 (4096 대신에) 메모리는 24의 깊이를 갖는다 (262,144 대신에). 논리 보드 및 제어 보드 메모리는 논리 분석기가 중단된 이후 다음의 데이터를 갖게 된다:
논리 보드 제어 보드 블록 레지스터
어드레스 인에이블 데이터 메모리 시간스탬프 분류 Acq.
0 28 43 0 0111
1 18 47
2 <- 카운터 17 45
3 92 4
4 93 5
5 94 6
6 95 7
7 96 8
8 3 13 0 0101
9 1 10
10 2 12
11 5 27
12 7 29
13 14 30
14 8 31
15 27 32
16 3 33- 1 0111
17 9 34
18 10 35
19 11 37
20 12 39
21 13 40
22 14 41
23 17 42
어드레스 오버플로우 비트 = 1
어드레스 카운터는 위치 2에서 중단되었고, 어드레스 오버플로우 (address overflow) 비트가 설정된다. 이는 위치 0에서 7까지의 블록이 최종 블록이고 위치 8에서 15까지의 블록의 최초 블록임을 의미한다. 제1 블록에 대해 저장된 수용 인에이블 비트를 봄으로서, 위치 12 및 14에서 제1 블록의 끝부분에 있는 프레임이 양호하고 위치 13 및 15에서 제1 블록의 끝부분에 있는 프레임은 양호하지 못한 것으로 결정될 수 있다. 블록내의 다른 모든 프레임은 양호하고, 그렇지 않은 경우에는 어드레스 카운터가 다음 블록으로 증가되지 않는다. 시간스탬프에 의해 분류되여 양호하지 못한 데이터를 제거함으로서, 제1 블록은:
에뮬레이션 보드 제어 보드
어드레스 데이터 메모리 시간 스탬프
9 1 10
10 2 12
8 3 13
11 5 27
12 7 29
14 8 31
주: 블록에서 최종 4개 프레임은 항상 분류된 순서로 있으므로, 양호하지 않은 프레임은 시간스템프에 의해 분류된 이후에 또는 이전에 제거될 수 있다.
제2 블록은 다음에 처리된다. 어드레스 23의 프레임은 어드레스 16에서 시작되는 제2 블록에서 양호하지 못하다. 이 블록에 대한 분류 비트는 블록 레지스터에서 설정되기 때문에, 그 블록은 분류될 필요가 없다. 양호하지 못한 프레임을 제거한 이후, 블록은 다음과 같다:
에뮬레이션 보드 제어 보드
어드레스 데이터 메모리 시간 스탬프
16 3 33
17 9 34
18 10 35
19 11 37
20 12 39
21 13 40
22 14 41
이제는 어드레스 0에서 시작되는 최종 블록이 처리된다. 먼저, 프레임이 시간스탬프로 분리되어 다음을 제공한다:
에뮬레이션 보드 제어 보드
어드레스 데이터 메모리 시간 스탬프
3 92 4
4 93 5
5 94 6
6 95 7
7 96 8
0 28 43
2 17 45
1 18 47
다음에는 제1 시간스탬프 보다 앞선 시간스템프를 갖는 모든 프레임이 제1 블록(10)에서 없애진다. 이는 블록에 3개의 프레임만을 남기게 된다.
에뮬레이션 보드 제어 보드
어드레스 데이터 메모리 시간 스탬프
0 28 43
2 17 45
1 18 47
최종 프레임에 대한 블록 레지스터 수용 인에이블 비트는 수용 인에이블 파이프라인으로부터의 최종값을 포함한다. 이 블록에 대한 레지스터 내용은 0111이다. 이는 어드레스 1에 있는 최종 프레임이 양호하지 못하고 어드레스 0 및 2에 있는 다른 두 프레임이 양호함을 의미한다. 단 3개의 프레임만이 이 블록에 기록되었으므로, 하위 비트는 의미가 없다. 최종 블록은 다음과 같다:
에뮬레이션 보드 제어 보드
어드레스 데이터 메모리 시간 스탬프
0 28 43
2 17 45
또한, 회복된 데이터의 완전한 세트는:
에뮬레이션 보드 제어 보드
어드레스 데이터 메모리 시간 스탬프
9 1 10
10 2 12
8 3 13
11 5 27
12 7 29
14 8 31
16 3 33
17 9 34
18 10 35
19 11 37
20 12 39
21 13 40
22 14 41
0 28 43
2 17 45
이제는 본 실시예의 시스템을 프로그램하는데 요구되는 소프트웨어가 논의된다. 소프트웨어는 업데이트되므로, 그 내용이 여기서 참고로 포함되는 미국 특허 No. 5,109,353, 5,036,473, 5,448,496과 5,452,231, 및 5,475,830에서 앞서 논의된 소프트웨어와 다르다. 도 21에는 흐름도가 도시된다.
소스 네트리스트는 네트리스트 입력기 (netlist importer)(1000)에 의해 직접 입력되거나, Quickturn Design Systems, Inc.으로부터 이용가능한 HDL-ICETM브랜드 논리 합성 소프트웨어와 같은 논리 합성 프로그램(1002)에 의해 제작되거나, 또는 작동 테스트벤치 컴파일러 (behavioral testbench compiler)(1004)에 의해 발생될 수 있다. 네트리스트 입력기(1000)는 EDIF 및 Verilog와 같은 다양한 포맷으로 게이트 레벨 텍스트 네트리스트를 취할 수 있고, 그 네트리스트를 계층구조로 정의된 셀 (cell), 일반 셀, 및 특수 하드웨어 셀을 포함하는 데이터베이스 논리 라이브러리 (library)에 의해 나타내지는 내부 데이터베이스 네트리스트 포맷으로 변환할 수 있다. 특수 하드웨어 셀은 메모리 지정 셀, 마이크로프로세서 셀, 및 구성성분 어댑터 (adaptor) 셀을 포함한다. 계층구조로 정의된 셀의 일부는 칩 사이에서 전해질 때의 타이밍 문제를 방지하도록 평평해지고 수개의 논리칩(10) 사이에 분리되는 것을 방지하는 플래그 (flag)를 갖는다. 네트리스트 입력기 소프트웨어의 선택과 설계는 설계 선택의 문제이므로, 더이상 논의되지 않는다. 논의된 바와 같이, 평평해진 셀은 계층구조 셀을 포함하지 않는 것이다. 이는 단지 간단한 논리 게이트와 같이 가장 원시적인 구성성분만을 포함한다.
여기서 주어진 논리 합성기(1002)인 HDL-ICETM브랜드 논리 합성기(1002)는 레지스터-전달-레벨 (register-transfer-level, RTL) Verilog 또는 VHDL 네트리스트를 취하고, 이들을 논리 합성 처리를 통하여 네트리스트 입력기 및 다른 컴파일 단계에 의해 사용되는 데이터베이스 포맷으로 변환한다. Synopsis Corporation 및 다른 회사로부터 상업적으로 이용가능한 다른 적절한 합성 제품이 있지만, HDL-ICETM브랜드 논리 합성기는 더 나은 집적도 및 더 높은 동작 속도와 같은 이점을 갖는다.
작동 테스트벤치 컴파일러(1004)는 Verilog 또는 VHDL에서 설명되는 작동 테스트벤치가 에뮬레이트되도록 허용한다. 하나 이상의 논리 보드(200)의 프로세서(206)에서 나란히 실행되는 코드는 상호-시뮬레이션 논리칩(204)을 통해 네트리스트 입력 프로그램(100) 또는 HDL-ICETM 브랜드 논리 합성기와 연결될 수 있는 다른 논리에 단단히 연결된다. 프로세서(206)에서 실행되는 코드는 논리 설계의 작동 (합성가능하지 않은) 표시인 반면, 다른 논리는 게이트 레벨, (합성가능) RTL 표시이다.
논리 셀 메모리 (LCM) 발생기(1006)는 논리칩(10)에 설치된 메모리를 사용해 실시될 사용자의 설계로부터의 메모리 지정 셀을 각 논리칩(10)내의 상대적인 위치와 논리칩(10)내에서 구성가능한 논리 블록으로의 맵핑을 포함할 수 있는 메모리 셀 실시를 정의하는 계층구조로 정의된 셀 (하드 마크로 (hard macro))로 대치한다.
사용자 데이터 입력 프로그램(1008)은 사용자가 클럭 정보, 프로브 정보, 특수 네트 정보 등과 같이 설계 컴파일에 필요한 정보를 입력하도록 허용한다. 이 정보는 특수한 방법으로 처리되지 않는 경우 에뮬레이션 동안 문제를 일으킬 수 있는 특수한 조건을 처리할 때 에물레이션 시스템에 도움을 준다.
데이터 자격 프로그램(1010)은 네트리스트와 사용자 데이터의 정확성을 검증한다. 이는 네트에 부착된 다수의 출력 또는 구동되지 않은 입력과 같은 일반적인 네트리스트 에러를 찾는다.
클럭 트리 (clock tree) 추출 프로그램(1012)은 계층구조 네트리스트로부터 클럭 트리를 추출하고, 설계 계층구조의 모든 레벨에서 클럭 단자를 식별한다. 이 단계의 동작 설명은 미국 특허 No. 5,475,830에서 상세히 설명된다.
계층구조 분할 계획 프로그램 (hierarchical partition planning program, HPP)(1014)은 물리적인 모듈 칩 분할 알고리즘으로 사용된다. 이는 각 논리 보드(200)로 맵핑된 설계 부분을 식별한다.
분할 DB 셋업(1016)은 HPP(1014)에 의해 식별된 각 부분에 대해 칩 분할 프로그램의 병렬 실행을 위한 데이터베이스를 준비한다.
칩 분할 프로그램(1018)은 분리된 각 논리칩(10)에서 실시되는 논리의 클러스터 (cluster)를 식별한다.
NGD Out 프로그램(1020)은 칩 분할의 결과를 근거로 각 칩에 대응하는 NGD 파일을 생성한다. NGD는 Xilinx Corporation으로부터 이용가능한 다양한 소프트웨어 프로그램에 공통된 파일 포맷이다. NGD 파일은 논리 설계를 논리칩으로 실시하는데 필요한 논리 및 루트 정보를 포함한다. 논의된 바와 같이, 바람직한 실시예에서는 Xilinx로부터의 논리칩이 사용된다. NGD Out 프로그램(1020)은 데이터베이스 정보를 NGD 포맷으로 바꾼다. NGD Out 프로그램(1020)은 또한 임의의 I/O 핀 배열로 각 논리칩(10)에 대한 병렬 분할, 배치, 및 루트 (parallel partition, place, and route, PPR) 작업(1022)을 시작한다. PPR 프로그램(1022)은 FPGA Xilinx 제작자에 대한 프로그래밍 파일을 만드는 Xilinx Corporation으로부터 상업적으로 이용가능한 프로그램이다.
물리적 DB 발생 프로그램(1026)은 보드 분할 프로그램에 의해 사용될 물리적 데이터베이스를 준비한다. 물리적 데이터베이스는 시스템내의 각 보드에서 논리칩(10)과 Mux 칩(12) 사이의 물리적 연결에 대한 정보를 포함한다.
보드 분할 프로그램(1028)은 각 쌍의 논리 보드(200)내에서 논리칩(10)으로의 논리 게이트 배치를 식별한다. 이는 각 논리 보드(200)에서 실시될 수 있는 메모리 예의 제한, 논리 분석기 프로브 채널 제한, 보드 당 한 마이크로프로세서의 제한 뿐만 아니라 백플레인 및 터보 커넥터 제한을 고려한다.
EBM 컴파일 프로그램(1030)은 같은 논리 보드(200)에 지정된 모든 나머지 메모리 지정 셀을 RAM(208) (도 11에서 앞서 도시된)에 대응하는 12개 정도의 그룹으로 조합한다. SRAM 칩(208)에 연결되는 I/O 신호는 대응하는 핀 번호로 표시된다.
시스템 루팅 모듈(1032)은 칩 경계와 교차하는 논리적 네트를 실시하도록 물리적인 네트와 시간-분할 멀티플렉싱 (TDM) 위상을 선택한다. 이는 핀 번호와 TDM 위상을 모든 칩 I/O 핀에 지정한다. 또한, Mux 칩(12)과 반복기 포드(520)에 대한 프로그래밍 데이터를 만든다.
NGD 업데이트 프로그램(1034)은 TDM 논리와 I/O 할당의 최종적인 연결성을 제공하도록 각 논리칩(10)에 대한 최종적인 증가 PPR 작업(1036)을 시작한다. 작업이 성공적으로 완성될 때, 컴파일은 종료된다.
이제는 다양한 프로그램의 기능성에 대한 상세한 내용이 더 설명된다.
도 22를 참고로, 작동 테스트벤치 컴파일러(1004)에 의해 생성된 소프트웨어-하드웨어 모델의 컴파일에 필요한 단계의 시퀀스가 도시된다. 컴파일은 Verilog 또는 VHDL의 사용자 소스 코드로부터 시작된다. 입력 처리(1100)의 결과로, 작동 데이터베이스 표시(1102)가 생성된다. 모델 컴파일이 종료된 이후에는 도 20에 앞서 도시된 논리 모듈 프로세서 DRAM(226)으로 다운로드가능한 실행가능 내용(1112)의 세트와 에뮬레이션 모델(1114)의 논리적 표시가 주어지게 된다.
작동 테스트벤치 컴파일러 소프트웨어(1004)는 4개의 실행가능 내용과 런타임 지지 라이브러리 (runtime support library)를 포함한다.
입력기(1100)는 사용자의 Verilog 또는 VHDL 소스 파일을 처리하고 작동 데이터베이스 라이브러리(1102)를 만든다. 이는 그렇지 않은 경우 정의되지 않은 모듈 기준이 분해되어 있는 라이브러리에 대한 소스 파일명과 위치 및 파일명의 리스트를 수용한다. 소스 파일명은 Verilog 또는 VHDL에 의해 사용되는 파일명이다.
프리프로세서 (preprocessor)(1104)는 입력기(1100)에 의해 생성된 작동 데이터베이스 라이브러리(1102)를 새로운 작동 데이터베이스 라이브러리(1106)로 변환한다. 이는 이용가능한 프로세서(206) (도 11을 참고) 각각에서 실행될 수 있도록 동작 코드를 클러스터 (또한 구획 (partition)이라 칭하여지는)로 분할하고, 코드 프래그먼트 (code fragment)의 실행 순서와 구획에서 변수의 소재를 결정한다. 코드 프래그먼트는 프로세서(206)에서 평행하게 실행될 수 있는 독립적인 코드 일부분이다. 또한, 프리프로세서는 유지 시간 위반 자유 모델의 생성에 필요한 모든 변환을 행한다. 예를 들면, 여기서 전체적으로 참고로 포함되는 Price의 미국 특허 출원 No. 5,259,006을 참고한다.
코드 발생기(1110)는 프리프로세서(1104)에 의해 변환된 작동 데이터베이스 라이브러리를 판독하고, 프리프로세서(1104)에 의해 식별되는 각 클러스터에 대해 다운로드가능한 실행가능 내용을 만든다. 이 실행가능 내용은 프로세서(206)에서 실행되도록 DRAM(226)으로 다운로드된다.
네트리스트 발생기(1108)는 프리프로세서(1104)에 의해 변환된 작동 데이터베이스 라이브러리를 판독하고 다른 컴파일러 프로그램 (1106-1036)에 의한 또 다른 처리를 위해 논리적 데이터베이스 라이브러리(1114)를 만든다. 상호-시뮬레이션 논리칩(204)의 특수 연결을 마이크로프로세서 버스 및 이벤트 동기화 버스 (도 11을 참고)에 나타내기 위해, 네트리스트 발생기(1108)는 도 23에 도시된 네트리스트 구조를 생성하게 된다. MP 셀(1200)은 칩 분할 프로그램(1018)에 의해 클러스터 처리되지 않은 프로세서(206)에 대응하는 특수 셀이다 (LBM 셀의 예와 유사한). 주변 제어기 셀(1202)은 라이브러리 구성성분의 예를 포함하는 정규 셀로서, 상호-시뮬레이션 논리칩(204)에 배치된다. 마이크로프로세서 버스와 직접적으로 상호작용하는 이 셀(1202)로는 최소의 양의 논리만이 배치된다. 최소량의 논리를 주변 제어기 셀(1202)로 배치하면, 대기 상태 프로그래밍이 필요 없어진다. 주변 제어기 셀(1202)은 칩 분할 프로그램(1018)이 수개의 논리칩(10) 사이에서 이를 분열하는 것을 방지하도록 플래그 처리된다. 이 셀의 용량이 단일 논리칩(204)의 용량을 넘지 않고 이 셀과 나머지 네트리스트 사이의 연결수가 상호-시뮬레이션 논리칩(204)과 Mux 칩(12) 사이의 연결수를 넘지 않도록 보장하는 것은 네트리스트 발생기(1108)의 담당이다. 앞서 논의된 바와 같이, 상호-시뮬레이션 논리칩(204)은 54개 Mux 칩(12) 각각과 전기적으로 통신하는 3개의 핀을 갖는다. 이는 도 11에 도시된 바와 같이 상호-시뮬레이션 논리칩(204)과 Mux 칩(12) 사이에 162 (3 * 54 = 162)개 연결이 이용가능함을 의미한다. 네트리스트 발생기(1108)는 또한 상호-시뮬레이션 논리칩(204)에 대해 정확한 물리적 연결을 발생하도록 시스템 루터(1032)를 유도하는 대응하는 핀 번호로 MP 셀(1200)에 연결된 특수 네트를 표시한다. 이는 프로세서(206)와 상호-시뮬레이션 논리칩(204) 사이의 연결이 논리칩(204)의 특정 핀에 부착되기 때문에 요구된다.
작동 테스트벤치 컴파일러(1004)는 현재 진행중인 출원에서 전부 설명된다: 여기서 전체적으로 참고로 포함되는 Sample의 에뮬레이션 및 시뮬레이션을 사용한 설계 검증에 관한 방법 및 장치 (Method And Apparatus For Design Verification Using Emulation And Simulation), 일련 번호 08/733,352.
논리칩 메모리 (LCM) 발생기(1006)는 Xilinx 관련 배치 매크로 (relationally placed macros, rpms)를 사용해 얇지만 고도로 포트화된 메모리를 실시한다. 이는 14개까지의 기록 포트, 임의의 수의 판독 포트, 및 디버그 억세스를 위한 하나의 추가 판독-기록 포트를 갖춘 메모리를 지지한다. 이는 논리칩(10)의 구성성분으로 이용가능한 동기화 이중-포트 RAM 원시 소자를 사용한다.
도 22a는 논리칩(10)에 배치되도록 LCM 메모리 발생기(1006)에 의해 발생될 수 있는 메모리 회로의 예를 도시한다. 도 22a의 메모리 회로는 다음의 구성성분을 포함한다:
기록 인에이블 샘플러 (sampler) 및 조정기 (arbitrator)(1050)는 기록 인에이블 신호를 빠른 클럭과 동기화하고, 수개의 포트로부터 바로 응답이 있을 때 메모리 회로의 기록 동작을 우선화시킨다. 기록 인에이블 샘플러 및 조정기(1050)는 기록 어드레스/데이터 Mux 선택 및 기록 인에이블 신호를 출력한다. 기록 인에이블 및 조정기 셀은 2 내지 16개의 기록 포트로부터 다양한 다른 기록 포트 구성으로 하드 매크로 (hard macro)의 형태인 기준 라이브러리에 미리 컴파일된다.
도 22a의 메모리 회로는 또한 판독 카운터(1052)를 포함한다. 판독 카운터(1052)는 실시되는 메모리의 판독 포트를 통해 순환하는데 사용된다. 이들 카운터는 또한 다양한 카운트 길이로 하드 매크로 셀인 기준 라이브러리에 미리 컴파일된다.
도 22a의 메모리 회로는 또한 판독 카운터(1052)의 출력이나 기록 인에이블 샘플러 및 조정기(1050)를 출력에 배치하는 멀티플렉서(1053)를 포함한다. 멀티플렉서(1053)의 출력은 슬롯 선택 신호 SLOT_SEL으로, 선택되는 16개 슬롯 (또는 포트) 중 하나를 허용하는 4개 와이어를 포함한다.
도 22a의 메모리 회로는 또한 어드레스 Mux 및 데이터 Mux(1056)를 포함한다. 어드레스 Mux 및 데이터 Mux(1056)는 적절한 슬롯이나 포트 시간이 될 때 포트 기록/판독 어드레스 데이터 및 포트 기록 데이터를 선택하는데 사용된다. 슬롯 선택 신호 SLOT_SEL는 이 기능을 실행하도록 어드레스 Mux 및 데이터 Mux(1056)의 선택 입력에 입력된다.
도 22a의 메모리 회로는 또한 메모리(1058)를 구비한다. 메모리(1058)는 하나 이상의 Xilinx 구성가능 논리 블록 (CLB) 구성성분으로 이용가능한 정적 RAM 메모리이다.
도 22a의 메모리 회로는 또한 판독 슬롯 디코더(1054)를 포함한다. 판독 슬롯 디코더(1054)는 출력 레지스터(1060)에 대한 클럭 인에이블 입력으로 사용되는 16개까지의 각 와이어로 슬롯 선택 신호 SLOT_SEL (4개인)를 복호화한다.
다시 도 21을 참고로, LCM 메모리 발생 프로그램(1006)에 의해 발생된 포트의 폭, 깊이, 및 수는 네트리스트 입력 프로그램(1000), HDL-ICETM브랜드 합성기 프로그램(1002), 또는 작동 테스트벤치 프로그램(1004)에 의해 만들어진 네트리스트의 요구조건에 의존한다. Xilinx 관련 배치 매크로 (RPMS)는 논리칩(10)의 특정한 논리 모듈에 메모리 회로를 맵핑하는 것을 제어하도록 일반 셀의 예 뿐만 아니라 특수 FMAP 및 HMAP 셀의 예를 사용해 정의된 데이터베이스 셀로 생성된다. FMAP 및 HMAP 셀은 Xilinx PPR 프로그램(1022)의 작동을 제어하는 특수 원시 구성성분이다. 논의된 바와 같이, 바람직한 실시예에서는 Xilinx FPGA에 CLB가 있다. 이러한 예는 또한 논리가 배치되어야 할 논리 모듈 (바람직한 실시예에서는 CLB)의 상대적인 위치를 지정하는 RLOC 특성을 가질 수 있다.
RPM 셀은 칩 분할 프로그램(1018)이 수개의 논리칩 사이에서 분열되는 것을 방지하도록 플래그 처리되어야 한다 (바람직한 실시예에서는 이 플래그가 "NOFLAT"라 칭하여진다). RPM 셀은 또한 미리 계산된 용량값과 그 차원 (수평 및 수직적으로 사용되는 예를 들어 CLB인 논리 모듈의 수)을 포함하는 특성을 가져야 한다.
데이터 자격 프로그램(1010)은 논리 원시셀에 대한 FMAP 및 RMAP 원시셀의 병렬 연결이 설계 규칙 위반을 일으키기 때문에 RPM 셀 내부에서 네트리스트를 검증하지 않는다. NGD Out 프로그램(1020)은 각 RPM 예에서 모든 원시셀의 RLOC 값을 보존하게 된다. 이는 RLOC 특성에 의해 정의된 제한을 만족시키는 방식으로 PPR(1022)이 칩에 RPM을 배치하도록 허용하게 된다.
사용자 데이터 입력 프로그램(1008)은 사용자가 클럭 및 다른 설계 정보를 입력하는 것을 허용하고, 그에 부가하여 포괄적인 프로브 멀티플렉싱 계수를 계산한다. 프로브는 설계의 디버깅 동안 관찰되는 네트리스트 내부점이다. 프로브 멀티플렉싱 계수는 논리칩(10)에 부가될 주사 체인의 길이를 결정한다. 사용자는 프로브를 열거하거나 전체 가시 모드를 요구할 수 있다. 전체 가시 모드의 경우, 멀티플렉싱 계수는 64이다. 사용자가 지정된 신호 리스트만을 보기 원하면, 멀티플렉싱 계수는 다음과 같이 계산되어야 한다:
(프로브의 수) * (편차 계수) / (432 * (논리 보드의 수))
논리 보드(200)의 수는 계산될 때 공지되어 있어야 한다. 편차 계수는 실험적으로 결정되는 계수로, 논리 보드(200) 중에서 프로브 신호의 가능한 비균일 분포를 고려하는데 사용된다. 확률 이론을 고려해보면, 대형 시스템에 대한 1.4와 2-보드 시스템에 대한 1.7 사이의 값이 제안된다. B개 보드를 갖춘 시스템에서는 대략 1/(1-0.29squt(B/(B-1))이 된다. 이 계수는 하나 이상의 논리 보드(200)를 재컴파일하지 않고 프로브를 증가적으로 부가하기 위한 여분을 제공하도록 더 증가될 수 있다.
본 실시예에서의 논리 분석기 이벤트는 논리 보드(200)상의 논리칩(10)에서 프로그램가능한 논리에 의해 계산된다. 그러므로, 이벤트 계산을 위해 논리칩(10)에서는 용량이 예정되어야 한다. 결과적으로, 사용자가 설계 컴파일 이후까지 신호와 이벤트 정의를 지연시키면, 실행된 칩의 증가적인 재컴파일이 필요하게 된다. 예정된 용량이 소정의 칩에 불충분한 경우, 신호는 도 20c에 앞서 도시된 바와 같이 이벤트 검출기를 설립하기에 충분한 용량을 갖는 다른 논리칩(10)으로 전달될 필요가 있다. 이는 더 컴파일 시간을 제공할 수 있다. 긴 컴파일 시간은 이벤트를 생성하는데 사용되는 컴파일 이전에 모든 신호를 지정함으로서 방지될 수 있다. 이는 용량에 영향을 주지 않기 때문에, 실제적으로는 이벤트 또는 트리거를 그 지점에서 정의할 필요가 없다. 이벤트 논리 기능 자체는 제어기(221) (도 20 및 도 20c에 도시된)에 연결된 JTAG 버스를 사용해 동작하는 동안 논리칩(10)으로 다운로드될 수 있다.
최종적으로, 이 사용자 데이터 입력 단계(1008) 동안에, 사용자는 중요하지 않는 신호에 대한 시간-멀티플렉싱 계수를 선택할 필요가 있다. 상기에 논의된 바와 같이, 시간-멀티플렉싱 계수는 1, 2, 또는 4가 될 수 있다.
칩 분할 프로그램 (1016, 1018)은 클러스터 근거의 알고리즘을 사용한다. 유사한 알고리즘의 예는 Quickturn Design Systems, Inc.로부터 이용가능한 System RealizerTM에뮬레이션 시스템과 같은 종래 기술의 하드웨어 에뮬레이션 시스템에서 볼 수 있다. 그러나, 바람직한 실시예에서는 많은 차이가 있다. 이제는 이러한 차이가 상세히 설명된다.
1) 특정한 종류의 셀은 부적절한 분할, 클러스터 처리 등을 방지하도록 특별한 주위를 필요로 한다. "노터치 (no-touch)" 셀은 논리와 함께 클러스터 처리되지 말아야 하는 특정한 셀이다. "노터치" 셀의 예는 도 23에 도시된 MP 셀이다. "노플랫 (no-flat)" 셀은 수개의 칩 사이에서 분열되지 말아야 하는 셀이다. "노플랫" 셀의 예는 분열로 타이밍 문제가 야기되는 하드 마크로 (hard macro) 및 래치 (latch)이다.
2) 일부 특수한 네트는 드라이버를 갖지 않고 임의로 절단될 수 있다. POWER 및 GROUND에 부가하여, 논리 게이트가 연결될 수 있는 이러한 특수 네트의 예는 Mux 클럭 신호 (MUXCLK)(44)이다. 특히, 작동 테스트벤치 컴파일러(1004), EBM 컴파일러(1030), 및 LCM 컴파일러(1006)는 MUXCLK에 연결된 논리를 생성하게 된다.
3) Pin out 제한은 클러스터가 가질 수 있는 네트의 최대수를 제어한다. 논리 클러스터가 RI 정규 외부 입력 네트, RO 정규 외부 출력 네트, CN 주요 외부 네트, P 프로브 신호를 갖고, 프로브에 대한 시간-분할 멀티플렉싱 계수가 T라고 가정하면, 칩상에 이 클러스터를 실시하는데 요구되는 핀의 수는 다음과 같이 계산된 (모든 나눗셈 동작은 반올림없이 순수한 정수 나눗셈이다).
a. 논리 신호의 시간-멀티플렉싱이 없으면, 핀의 수는
RI + RO + CN + (P+T-1)/T
b. 논리 신호의 2 대 1 시간-멀티플렉싱이면, 핀의 수는
(RI+1)/2 + (RO+1)/2 + CN + (P+T-1)/T
c. 논리 신호의 4 대 1 시간-멀티플렉싱이면, 핀의 수는
max((RI+1)/2, (RO+1)/2) + CN + (P+T-1)/T
주: 사용자에 의해 전체 가시 모드가 선택될 때, 프로브 P의 수는 플립플롭 및 래치의 수와 똑같다고 가정된다.
4) 클러스터로 허용되는 최대 크기는 특정한 논리칩(10)의 게이트 용량에 의존한다. 논리 게이트에 부가하여, 시간-분할 멀티플렉싱, 프로브 처리, 및 이벤트 검출 회로를 위해 추가 용량이 요구된다. 논리의 클러스터가 RN 정규 (중요한 것이 아닌) 외부 네트 (RN은 RI + RO와 같다), P 프로브 신호, 이벤트 검출에 사용되는 E 신호를 갖는다고 가정하면, 시간-분할 멀티플렉싱, 프로브 처리, 및 이벤트 검출 회로를 위한 추가 용량은 다음과 같다:
a. 논리 신호의 시간-멀티플렉싱이 없으면, 논리 분석기에 대한 추가 용량은
플립/플롭: P + 2*E + logE
게이트: C1*P + C2*((E+1)/2)*8
바람직한 실시예에서는 상수가 C1= 2, C2= 4이다. 이들은 실험적인 결과를 근거로 나중에 조정될 수 있다.
b. 임의의 종류의 시간-멀티플렉싱이면 (2:1, 4:1, 또는 다른 구조), 논리 분석기에 요구되는 것에 부가하여 추가 RN 플립/플롭이 필요하다.
5) 분할은 또한 미국 특허 No. 5,475,830에서 설명된 바와 같이 정확하게 클럭 트리 (clock tree)를 실시할 필요성에 의해 제어된다. 설계내의 각 네트는 CLKMASK라 칭하여지는 16-비트 정수 특성에 지정된다. CLKMASK의 비트 i는 사용자 클럭 i가 직접 (반전되지 않은) 위상으로 이 네트에 이르면 설정되어야 한다. 비트 8+i는 사용자 클럭 i가 반전 위상으로 이 네트에 이르면 설정되어야 한다. 이 정보는 요구되는 지연 조정을 실행하도록 PPR 프로그램(1022)에 전해진다.
NGD Out 프로그램(1020)은 처리되는 PPR 프로그램(1022)에 적절한 포맷으로 네트리스트를 출력한다. 부가하여, 이는 시간-분할 멀티플렉싱 또는 디버깅 논리를 삽입하도록 논리 수정에 관련된 다수의 특수 함수를 실행한다. 이들 함수는:
· 관련 배치 (RP) 매크로 보존: 데이터베이스에서 관련 배치 매크로는 PPR로 전해지는 NGD 파일에 보존된다. RP 매크로는 Xilinx FPGA 내에서 CLB의 고정 패턴으로 맵핑된 논리 게이트의 그룹이다. RP 매크로는 타이밍 특성을 보존하도록 추후 소프트웨어 단계에서 재분할되지 않는다.
· TDM 셀 삽입: 시간-분할 멀티플렉싱 셀은 Mux 칩(12)에 연결된 각 논리칩(10)의 경계에 부가된다. 멀티플렉싱되는 I/O 핀의 세트에 관련되어 배치된 소정의 셀이 사용된다. 도 24a 내지 도 24k는 모두 I/O 핀의 종류에 의존해 삽입될 수 있는 TDM 셀의 다른 변형을 도시한다. 시간-분할 멀티플렉싱을 위해, 논리칩(10)과 Mux 칩(12)의 단자는 도 24a 내지 도 24k에 도시된 바와 같이 특수한 RPM 셀을 사용해 4개의 그룹으로 나뉜다. 나머지 단자로, 2개 그룹이 사용되거나, 논리칩(10)이나 Mux 칩(12)에 이미 있는 정규 비멀티플렉싱 I/O가 사용된다. 비멀티플렉싱 I/O는 항상 주요 네트에 사용된다.
· TDM 제어 논리 삽입: TDM 제어 논리는 MC, MS, MT, E0, E1, E2, 및 E3인 TDM 제어 신호를 발생하여 도 24a 내지 도 24k에 도시된 회로에 분포시킨다. 이들 신호는 도 24a 내지 도 24k에 도시된 논리에 부가하여 각 논리칩(10)에 삽입되는 3개의 특수 제어 셀 중 하나에 의해 발생된다. 이들 신호의 발생은 도 6에 도시된 논리(104)나 도 3에 도시된 논리(68)를 사용해 행해진다. MC는 Mux 클럭 신호(44)이고; MS는 분할된 클럭 신호(50)이고; MT는 방향 신호(80)이고; 또한 E0 - E3은 각각 인에이블 신호 (90, 92, 94, 96)이다. 특수한 셀은 논리칩(10)상의 고정된 입력 핀에 연결된 2개의 입력 MUXCLK(44) 및 SYNC-(48)를 갖는다. 한 종류의 제어 셀 (도시되지 않은)은 TDM을 사용하지 않지만 Mux 클럭 신호 (MUXCLK)(44)에 연결된 논리를 갖는 칩에 사용된다. 이 셀은 Mux 클럭 신호 (MUXCLK)(44)만을 출력한다. 제2 종류 (도 3에 도시된 논리(68))는 2 대 1 TDM을 갖춘 설계에 사용된다. 이는 Mux 클럭 신호 (MUXCLK)(44) 및 MS (분할된 클럭) 신호(50)를 출력한다. 제3 종류의 제어 셀 (도 6에 도시된 논리(104))은 4 대 1 시간-멀티플렉싱에 사용된다. 이는 Mux 클럭 신호 (MUXCLK)(44), MS (분할된 클럭)(50), MT (방향)(80), E0(90), E1(92), E2(94), E3(96)을 발생한다.
· 프로브 신호에 대한 주사 셀 (scan cell) 삽입: 각 프로브 신호는 프로브 셀의 데이터 입력에 연결되어야 한다. 프로브 셀은 출력을 갖지 않고 2개의 다른 입력을 갖는다. 이들 입력 중 하나는 Mux 클럭 신호 (MUXCLK)(44)에 전기적으로 연결된다. 다른 입력은 칩 입력으로부터 오는 트레이스 클럭 신호(2002)에 전기적으로 연결된다. 프로브 셀은 도 20b 및 도 20c에 도시된 바와 같이 플립플롭(2004)과 멀티플렉서(2005)를 포함한다.
· 주사 체인 지정 파일의 발생: 프로브 셀의 모든 예는 주사 체인 지정 파일에 리스트되어야 한다. 칩의 주사 출력(2006) (도 20b를 참고)도 또한 리스트되어야 한다. 이들 출력은 시스템 루터가 이를 보고 적절한 연결을 이룰 수 있도록 칩 논리 클러스터의 데이터베이스 모델로 삽입되어야 한다. 출력의 수는 (P+T-1)/T이고, 여기서 P는 프로브 셀의 수이고 T는 프로브 신호에 대한 시간-분할 멀티플렉싱 계수이다.
· 이벤트에 관련된 신호에 대한 이벤트 검출 셀의 삽입: 이벤트에 관련된 신호는 쌍으로 분할되고, 각 쌍은 도 25에 도시된 바와 같이 8개의 이벤트 검출 셀(1300) 중 I0 및 I1 입력에 연결된다. 이벤트 검출 셀의 바람직한 실시예는 도 20c에 앞서 도시되었다. 이벤트 검출 셀(1300)은 4개의 플립플롭(2010)과 CLB 메모리(2018)를 포함한다. 4개의 멀티플렉서(2020)와 4개의 출력 버퍼(2022)는 4개의 멀티플렉싱된 이벤트 신호(236) (도 20c 및 도 20a에도 도시된)를 만드는데 사용된다. 신호의 수가 홀수이면, 각 이벤트 검출 셀에 대한 입력 중 하나는 대응하는 8개 셀에서 사용되지 않고 남겨진다.
· 이벤트 검출기 출력에 대한 8개의 균형된 AND 트리의 발생과, 8개 AND 트리의 출력을 4개의 전용 이벤트 핀에 연결시키는 TDM 논리: 이벤트 검출 셀(1300)의 출력은 이전 단계에서 생성된 8개 셀 중 하나가 각 트리에 주어지도록 8개의 균형된 AND 트리를 사용해 조합된다. 트리의 출력은 도 26에 도시된 바와 같이 특수한 이벤트-멀티플렉싱 셀을 사용해 쌍으로 시간-멀티플렉싱된다. 이 회로는 또한 도 20c를 참고로 설명되었다. AND 게이트(2012)는 도 20c에 도시된 바와 같이 넓은 엣지 디코더(2012)를 사용해 구성된다. 도 26은 이 회로를 보다 상세히 도시한다.
· 이벤트 검출기 다운로드 경로의 발생과 경계 주사 제어기: 이벤트 검출기 다운로드 회로(1500)는 도 27에 도시된다. 이는 JTAG 제어기(1150)와 함께 카운터(2016) 및 쉬프트 레지스터(2014)로 구성된다. JTAG 제어기(1150)는 Xilinx 논리칩(10)의 표준 부분으로 이용가능하다. 이 회로는 또한 도 20c에서 주사 레지스터 및 이벤트 검출기와 함께 도시된다. 이벤트 검출기 다운로드 회로(1500)는 모든 이벤트 검출기 (또한 도 20c에 도시된)에 대해 WA(1502), WE(1504), DRCLK(1508), 및 TDI(1506) 신호를 만든다. 이벤트 검출기 카운터(2016)는 WA 신호(1502)와 쉬프트 레지스터(2014)에 대한 클럭을 발생하고, 그 길이는 이벤트 디코더 회로의 수에 의존한다. 그 회로는 도 20c 및 도 27에 도시된다. 바람직한 실시예에서, 쉬프트 레지스터(2014)는 이벤트 검출기의 수를 근거로 발생된다. 그러나, 칩 당 이벤트 검출기의 최대수를 정의하고 쉬프트 레지스터(2014)의 설계를 고정하는 것이 수용가능하다. PPR 프로그램(1022)은 사용되지 않은 논리를 대부분 다듬어낸다.
다시 도 21을 참고로, 이제는 보드 분할 단계(1024)가 설명된다. 보드 분할 단계(1024)의 기능은 다음의 제한을 갖고 단일 논리 보드(200) (37개 칩) 또는 한쌍의 논리 보드 (74개 칩)에서 논리칩 (10, 204)의 수를 넘지 않는 가장 큰 가능한 수의 칩을 갖는 칩 클러스터 (클러스터는 상호연결된 구성성분의 집합체이다)을 찾는 것이다:
1. 들어오거나 나가는 네트의 총 수는 도 11에 도시된 바와 같이 한쌍의 논리 보드(200)에서 두 백플레인 커넥터(220)상의 I/O 연결의 합 (바람직한 실시예에서 3608)을 타켓 백플레인 사용 계수로 곱한 것을 넘지 말아야 한다. 타켓 백플레인 사용 계수는 실험적으로 결정되고, 시스템 루팅 프로그램(1032)이 평균적으로 이룰 수 있는 성공도에 의존한다. 타켓 백플레인 사용 계수는 대략 90 퍼센트로 기대된다.
2. 논리 분석기 채널로 표시된 칩 출력의 총 수는 864 (54개 Mux 칩(12) x 8개 SGRAM(210) 핀 x 모듈내의 2개 논리 보드(200))를 넘지 말야야 한다.
3. EBM 메모리 예의 전체 세트는 24개 이하의 칩 (1/2 크기의 모듈에 대해서는 12개)으로 고정되어야 하고 (도 11을 참고로 앞서 논의된 바와 같이, 논리 보드(200)에는 12개 RAM(208) 또는 한쌍의 논리 보드에는 24개 RAM이 있다), EBM 메모리에 요구되는 논리칩(10)의 수는 총 74개 (1/2 크기의 모듈에 대해서는 37개)에서부터 카운트된다.
4. CPU 셀 예의 총 수 (즉, 사용자의 설계로부터 CPU 예의 수)는 2 (1/2 크기의 모듈에 대해서는 1)를 넘지 말아야 한다 (도 11을 참고로 설명된 바와 같이, 논리 보드(200) 당 하나의 프로세서(206) 또는 한쌍의 논리 보드에 2개의 프로세서가 있다).
5. 74개 (1/2 크기의 모듈에 대해서는 37개) 칩(204) 중 2개 (1/2 크기의 모듈에 대해서는 1)는 클럭 발생 논리칩으로 사용되거나 마이크로프로세서 셀로 부착될 수 있다. 마이크로프로세서 셀이 주어지면, CoSim 논리칩(204)이 한번에 한 기능으로만 사용될 수 있기 때문에 클럭 발생 논리칩 등이 없어진다. 그러나, 둘 다 없어지는 것은 가능하다. 이러한 경우에는 단지 72개의 (단일 논리 보드(200)에서는 36개) 전용량 논리칩(10)이 사용될 수 있다. 2개의 추가 CoSim 논리칩(204) (1/2 크기의 모듈에 대해서는 1)은 162개 이하의 I/O 핀을 갖는 클러스터가 이용가능하면 (도 11을 참고) 추가 사용자 논리를 실시하는데 사용될 수 있다.
적절한 클러스터가 식별된 이후에, 전크기의 클러스터는 1868개 (터보 커넥터(202)상의 핀수) 이하의 보드간 연결을 갖춘 2개의 에뮬레이션 보드로 더 세분된다. 각 보드는 모든 주요 클러스터 소스 (1804개 입출구 네트, 12개 EBM 메모리, 1개 마이크로프로세서나 클럭 발생 논리칩(204), 432개 논리 분석기 채널, 37개 논리칩 (10, 204))의 1/2 이하를 가져야 한다.
EBM 컴파일 단계(1030)는 에뮬레이션 블록 메모리 (EBM)로 실시되는 메모리 셀의 예를 생성한다. 이들은 칩 분할 동안 논리 클러스터에 포함되지 않는 특수 셀로 생성된다. 평가 서브루틴은 소정의 세트의 메모리 예가 얼마나 많은 EBM 칩(208) (도 11을 참고)을 요구하는가를 평가한다. 이 서브루틴은 메모리 제어 회로가 소모하는 논리칩(10)의 수와, 한 보드상에 실시될 수 있는 메모리 예의 세트를 적절하게 지정하도록 계층구조 분할 계획 프로그램 (HPP)(1014) (이 연결은 도 21에서 도시되지 않는다) 및 보드 분할 프로그램(1028)으로부터 호출된다. 보드 분할 처리(1028)가 완료된 이후, EBM 메모리 컴파일러(1030)는 논리 보드(200)에서 각 RAM 칩(208)과 연관된 논리 클러스터를 생성하게 된다. RAM 칩(208)에 이르는 모든 선은 NGD Out 프로그램(1020)이 시간-멀티플렉싱 논리를 이에 삽입하지 않도록 "중요한 것으로" 표시된다. 또한, 이들은 시스템 루터(1032)가 정확한 I/O 제한을 발생할 수 있도록 각 논리칩(10) 핀 번호를 포함하는 특성을 갖는다. EBM 논리 클러스터는 프로브 신호를 포함할 수 없고, 사용자에게 억세스가능하지 않게 발생된 논리를 자동적으로 포함하기 때문에 이벤트를 발생할 수 없다.
바람직한 실시예에서, EBM 논리 클러스터는 미리 컴파일된다. 이는 이들 클러스터에 대해 배치 및 루팅 시간이 절약되도록 허용한다. EBM 메모리 컴파일러(1030)는 현재 진행중인 출원 08/733,352에서 전체적으로 설명된다.
시스템 루터(1032)는 논리칩 (10, 204), Mux 칩(12), 및 논리 보드(200)에서의 물리적인 와이어를 논리 네트 (또는 에뮬레이트되는 설계내의 신호), 논리 네트의 쌍 (2 대 1 멀티플렉싱에서), 및 4개 네트의 그룹 (4 대 1 멀티플렉싱에서)에 지정한다. 그에 이어서, 이는 논리칩(10) 핀과 시간-분할 멀티플렉싱 (TDM) 위상을 각 논리칩 (10, 204)에 오가는 각 신호에 지정한다.
시스템 루팅이 행해질 때는 신호 지연을 최소화하도록 시간-멀티플렉싱된 신호에 대해 최적 루트를 선택하는 것이 중요하다. 이를 행하는 알고리즘은 다음과 같다:
1. 2 대 1 시간-분할 멀티플렉싱 (2-1 TDM):
최적 루트는 각 Mux 칩(12)에서 TDM 위상을 교환하지만 이들을 물리적인 네트 소스에서 물리적인 네트 목적지로 전하지 않는다. 최적 루트의 예는:
alpha/output/even-beta/input/even-beta/output/odd-
alpha/input/odd,
또는
alpha/output/even-beta/input/even-beta/output/odd-
muxbeta/input/odd-muxbeta/output/evenbeta/input/even-
beta/output/odd-alpha/input/odd
이 설명에서, alpha 칩은 논리칩 (10 또는 204)과 동일하고, beta 칩은 Mux 칩(12)과 동일하다. 이는 두 논리칩 (10 또는 204) 사이에서 최소의 한 싸이클 지연을 제공한다. 지연은 도 3 및 도 4의 논리를 조사할 때 한 싸이클의 1/2이 되도록 나타날 수 있다. 수신된 이후 다음 1/2 싸이클에서는 논리칩 (10 또는 204)에서 신호가 안정되도록 논리칩 (10, 204)내의 멀티플렉서(34)가 1/2 싸이클의 끝부분에 가까운 신호를 클럭 조정하기 때문에, 이는 사실상 한 전체 싸이클이다. 루터(1032)가 최적의 루트를 찾지 못하면, 즉 적절한 위상 MUX 출력이 이용가능하지 않거나 적절한 위상 논리칩 (10 또는 204) 입력이 이용가능하지 않음을 의미하면, 신호는 추가 1/2 싸이클의 지연을 잃는다. 루터는 가능해도 같은 네트를 따라 손실을 누적하지 않도록 의도한다. 주요 네트는 지연을 최소화하기 위해 멀티플렉싱되지 않는다.
2. 4 대 1 시간-분할 멀티플렉싱 (4-1 TDM):
각 물리적 네트는 항상 1개의 입출력 핀 (IIOO 시퀀스) 및 하나의 출입력 핀 (OOII 시퀀스)를 포함한다. 다시, 최적 루트는 Mux 칩(12)에서 하나의 시간-분할 멀티플렉싱 (TDM) 위상을 교환하지만, 이들을 물리적인 네트 소스에서 물리적인 네트 목적지로 전하지 않는다. 최적 루트의 예는:
alpha/OI/O1-beta/IO/I1-beta/OI/O2-
alpha/IO/2alpha/OI/O2-beta/I0I2-beta/IO/O3-
alpha/OI/I3alpha/OI/O1-beta/IO/I1-beta/OI/O2-
muxbeta/IO/I2-muxbeta/IO/O3-beta/OI/I3-beta/IO/O4-
alpha/OI/I4
이는 최소의 1/2 싸이클 지연 alpha 대 alpha를 제공한다. 그러나, 1/2 싸이클의 4 대 1 시간-분할 멀티플렉싱 (4-1 TDM)은 한 싸이클의 2 대 1 시간-분할 멀티플렉싱 (2-1 TDM)과 같은 기간을 갖는다. 그러므로, 모든 네트가 최적으로 전해진다고 가정하면, 2 대 1 시간-분할 멀티플렉싱 (2-1 TDM)과 비교해 4 대 1 시간-분할 멀티플렉싱 (4-1 TDM)에서 속도가 손실되지 않는다. 그러나, 4 대 1 시간-분할 멀티플렉싱 (4-1 TDM) 루팅에서의 손실 (즉, 상기에 논의된 바와 같이, 최적 루트를 찾지 못한 경우)은 2 대 1 시간-분할 멀티플렉싱 (2-1 TDM) 루팅 보다 더 심각한 결과를 갖는다. 예를 들어, 경로는:
alpha/OI/O1-beta/IO/I1-beta/OI/O1-alpha/IO/I1
2인 1.25 4 대 1 시간-분할 멀티플렉싱 (4-1 TDM) 싸이클 (또는 2.5 2 대 1 시간-분할 멀티플렉싱 (2-1 TDM) 싸이클) 만큼 신호를 지연시키게 되고, 이는 최적 지연 보다 1/2배 더 나쁘다. Mux 칩(12)을 통한 모든 스테이지에서, 루터(1032)는 루터가 어느 입력-출력쌍을 선택하는가에 의존해 0, 1/4, 1/2, 또는 3/4의 4 대 1 시간-분할 멀티플렉싱 (TDM) 싸이클 만큼 손실될 수 있다. 루터(1032)는 매번 가능한한 적게 손실되도록 의도한다. 그래서, 주요 네트는 지연을 최소화시키기 위해 멀티플렉싱되지 말아야 한다.
일부 논리칩 (10 또는 204)은 특정 핀에 고정된 입력/출력 네트를 갖는다. 예를 들면, Mux 클럭 신호 (MUXCLK)(44), 트레이스 클럭 신호(2002), 상호-시뮬레이션 논리칩(204)과 프로세서(206) 사이의 연결 (도 11을 참고), 메모리 제어기 논리칩(10)과 RAM 칩(208) 사이의 연결, 이벤트 신호 출력(236) 등이 있다. 이들 연결은 전해질 필요는 없지만, 논리칩 (10, 204) 핀 제한 데이터로 포함되어야 한다.
또한, 제어 모듈(600) (도 19에 도시된)상의 클럭 분포 회로 (Mux 칩(12))에는 추가 프로그래밍이 요구된다. 이는 각 논리 모듈에 이르는 8개 이하의 사용자 클럭을 선택하는데 사용되는 클럭 회로의 일부이다.
NGD 업데이트 프로그램(1034)는 시스템 루터(132)에 의해 주어진 실제 핀 I/O 배열에 관한 정보를 최종 병렬 분할, 배치, 및 루트 (PPR) 소프트웨어(1036)에 공급한다. 시간-멀티플렉싱되지 않은 설계에서, 이는 실제 I/O 패드에 대한 신호의 배열이 된다. 시간-멀티플렉싱된 설계에서는 논리칩 (10, 204)과 Mux 칩(12) 주변의 TDM 논리가 또한 부가된다.
최종 병렬 분할, 배치, 및 루트 (PPR) 프로그램(1036)은 칩의 주변에서 I/O 핀을 재루팅하도록 증가 모드로 PPR 프로그램을 재운행한다. 앞서 기술된 바와 같이, PPR 프로그램은 Xilinx Corporation으로부터 이용가능하다. 재루팅은 예비 PPR 단계(1022)에서 앞서 주어진 논리칩 (10, 204) 구성 파일을 변화시키고, 출력핀을 시스템 루팅 단계(1032)에 의해 결정된 바와 같이 고정시킨다.
이와 같이, 집적 회로를 에뮬레이트, 검증, 및 분석하는 바람직한 방법 및 장치가 설명되었다. 본 발명의 실시예와 응용이 도시되고 설명되었지만, 종래 기술에 숙련된 자에게 명백한 바와 같이, 여기서 설명된 본 발명의 개념에서 벗어나지 않고 보다 많은 실시예와 응용이 가능하다. 그러므로, 본 발명은 첨부된 청구항의 의도내에서를 제외하고 제한되지 말아야 한다.

Claims (16)

  1. 다수의 상호연결 칩에 의해 서로 상호연결된 다수의 논리칩(logic chip)을 구비하여, 조합 논리 소자와 순차 논리 소자를 포함하는 논리 설계를 에뮬레이트하는 하드웨어 논리 에뮬레이션 시스템(hardware logic emulation system)에 집적된 논리 분석기에 있어서,
    상기 다수의 논리칩 각각으로 프로그램되고, 한 플립플롭으로 구성되고, 논리 설계의 순차 논리 소자 중 선택된 서브세트의 출력에 프로그램가능하게 연결될 수 있는 적어도 하나의 주사 체인(scan chain);
    상기 적어도 하나의 주사 체인과 통신하고, 논리 설계의 순차 논리 소자로부터 데이터를 저장하는 적어도 하나의 메모리 디바이스; 및
    상기 다수의 논리칩과 통신하고, 상기 적어도 하나의 주사 체인을 클럭하는 논리 분석기 클럭 신호와, 상기 다수의 논리칩에서 소정의 신호 조합이 일어날 때 발생되는 트리거(trigger) 신호를 발생하는 제어 회로
    를 포함하는 것을 특징으로 하는 논리 분석기.
  2. 제1항에 있어서,
    상기 적어도 하나의 메모리 디바이스에 저장된 데이터로부터 논리 설계에서 조합 논리 소자의 상태를 계산하는 수단을 더 포함하는 것을 특징으로 하는 논리 분석기.
  3. 제1항에 있어서,
    상기 다수의 논리칩 각각은 필드 프로그램가능 게이트 어레이(field programmable gate array)를 포함하는 것을 특징으로 하는 논리 분석기.
  4. 제3항에 있어서,
    상기 적어도 하나의 주사 체인은 상기 필드 프로그램가능 게이트 어레이내에서 구성가능한 논리 셀로 프로그램되는 것을 특징으로 하는 논리 분석기.
  5. 제4항에 있어서,
    상기 적어도 하나의 주사 체인은 상기 필드 프로그램가능 게이트 어레이내에서 구성가능한 루팅 자원(routing resource)을 사용해 논리 설계의 순차 논리 소자 중 상기 선택된 서브세트의 출력에 프로그램가능하게 연결되는 것을 특징으로 하는 논리 분석기.
  6. 제1항에 있어서,
    상기 적어도 하나의 메모리 디바이스는 다수의 프로그램가능한 상호연결칩을 통해 상기 적어도 하나의 주사 체인과 통신하는 것을 특징으로 하는 논리 분석기.
  7. 제1항에 있어서,
    상기 논리칩은 상기 소정의 신호 조합을 계산하여 거기서 실시되는 이벤트 논리 (event logic)를 갖는 것을 특징으로 하는 논리 분석기.
  8. 제3항에 있어서,
    다수의 필드 프로그램가능 게이트 어레이는 상기 소정의 신호 조합을 계산하여 거기서 프로그램되는 이벤트 논리를 갖는 것을 특징으로 하는 논리 분석기.
  9. 서로 프로그램가능하게 상호연결된 다수의 논리칩을 구비하여, 조합 논리 소자와 순차 논리 소자를 포함하는 논리 설계를 에뮬레이트하는 하드웨어 논리 에뮬레이션 시스템에 집적된 논리 분석기에 있어서,
    상기 다수의 논리칩 각각으로 프로그램되고, 한 플립플롭으로 구성되고, 논리 설계의 순차 논리 소자 중 선택된 서브세트의 출력에 프로그램가능하게 연결될 수 있는 적어도 하나의 주사 체인;
    상기 적어도 하나의 주사 체인과 통신하고, 논리 설계의 순차 논리 소자로부터 데이터를 저장하는 적어도 하나의 메모리 디바이스; 및
    상기 다수의 논리칩과 통신하고, 상기 적어도 하나의 주사 체인을 클럭하는 논리 분석기 클럭 신호와, 상기 다수의 논리칩에서 소정의 신호 조합이 일어날 때 발생되는 트리거 신호를 발생하는 제어 회로
    를 포함하는 것을 특징으로 하는 논리 분석기.
  10. 제9항에 있어서,
    상기 적어도 하나의 메모리 디바이스에 저장된 데이터로부터 논리 설계에서 조합 논리 소자의 상태를 계산하는 수단을 더 포함하는 것을 특징으로 하는 논리 분석기.
  11. 제9항에 있어서,
    상기 다수의 논리칩 각각은 필드 프로그램가능 게이트 어레이를 포함하는 것을 특징으로 하는 논리 분석기.
  12. 제11항에 있어서,
    상기 적어도 하나의 주사 체인은 상기 필드 프로그램가능 게이트 어레이내에서 구성가능한 논리 셀로 프로그램되는 것을 특징으로 하는 논리 분석기.
  13. 제12항에 있어서,
    상기 적어도 하나의 주사 체인은 상기 필드 프로그램가능 게이트 어레이내에서 구성가능한 루팅 자원을 사용해 논리 설계의 순차 논리 소자 중 상기 선택된 서브세트의 출력에 프로그램가능하게 연결되는 것을 특징으로 하는 논리 분석기.
  14. 제9항에 있어서,
    상기 적어도 하나의 메모리 디바이스는 다수의 프로그램가능한 상호연결칩을 통해 상기 적어도 하나의 주사 체인과 통신하는 것을 특징으로 하는 논리 분석기.
  15. 제9항에 있어서,
    상기 논리칩은 상기 소정의 신호 조합을 계산하여 거기서 실시되는 이벤트 논리를 갖는 것을 특징으로 하는 논리 분석기.
  16. 제11항에 있어서,
    다수의 필드 프로그램가능 게이트 어레이는 상기 소정의 신호 조합을 계산하여 거기서 프로그램되는 이벤트 논리를 갖는 것을 특징으로 하는 논리 분석기.
KR19997011176A 1997-05-30 1998-05-18 하드웨어 논리 에뮬레이션 시스템에서 사용되는 분포 논리분석기 KR20010013191A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/865,657 US5943490A (en) 1997-05-30 1997-05-30 Distributed logic analyzer for use in a hardware logic emulation system
US08/865,657 1997-05-30
PCT/US1998/010312 WO1998054649A1 (en) 1997-05-30 1998-05-18 Distributed logic analyzer for use in a hardware logic emulation system

Publications (1)

Publication Number Publication Date
KR20010013191A true KR20010013191A (ko) 2001-02-26

Family

ID=25345974

Family Applications (1)

Application Number Title Priority Date Filing Date
KR19997011176A KR20010013191A (ko) 1997-05-30 1998-05-18 하드웨어 논리 에뮬레이션 시스템에서 사용되는 분포 논리분석기

Country Status (10)

Country Link
US (2) US5943490A (ko)
EP (1) EP0985175B1 (ko)
JP (1) JP4225583B2 (ko)
KR (1) KR20010013191A (ko)
AT (1) ATE278986T1 (ko)
CA (1) CA2291257A1 (ko)
DE (1) DE69826859T2 (ko)
IL (1) IL132984A0 (ko)
TW (1) TW424199B (ko)
WO (1) WO1998054649A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100794916B1 (ko) * 2001-09-14 2008-01-14 양세양 에뮬레이션과 시뮬레이션을 혼용한 점진적 설계 검증을위한 설계검증 장치 및 이를 이용한 설계 검증 방법
KR101524828B1 (ko) * 2008-04-23 2015-06-02 삼성전자주식회사 에뮬레이션 시스템 및 그 구동 방법
KR102319160B1 (ko) * 2020-07-14 2021-11-01 주식회사 엑시콘 반도체 디바이스 테스트 시스템
KR20220069559A (ko) * 2020-11-20 2022-05-27 주식회사 에스디에이 고속 신호 특성 검증을 위한 지능형 프로브 카드

Families Citing this family (105)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6687865B1 (en) * 1998-03-25 2004-02-03 On-Chip Technologies, Inc. On-chip service processor for test and debug of integrated circuits
US6289400B1 (en) * 1998-04-15 2001-09-11 Infineon Technologies Ag Electrical control device with configurable control modules
US6195629B1 (en) * 1998-11-09 2001-02-27 International Business Machines Corporation Method and system for selectively disabling simulation model instrumentation
US6202042B1 (en) * 1998-11-09 2001-03-13 International Business Machines Corporation Hardware simulator instrumentation
US7079490B1 (en) * 1998-12-03 2006-07-18 Intel Corporation Integrated circuit with trace analyzer
US6434733B1 (en) * 1999-03-24 2002-08-13 Synopsys, Inc. System and method for high-level test planning for layout
US6470478B1 (en) 1999-06-29 2002-10-22 International Business Machines Corporation Method and system for counting events within a simulation model
US6947882B1 (en) * 1999-09-24 2005-09-20 Mentor Graphics Corporation Regionally time multiplexed emulation system
US6263302B1 (en) * 1999-10-29 2001-07-17 Vast Systems Technology Corporation Hardware and software co-simulation including simulating the cache of a target processor
US6230114B1 (en) * 1999-10-29 2001-05-08 Vast Systems Technology Corporation Hardware and software co-simulation including executing an analyzed user program
US6262594B1 (en) * 1999-11-05 2001-07-17 Ati International, Srl Apparatus and method for configurable use of groups of pads of a system on chip
US7065481B2 (en) 1999-11-30 2006-06-20 Synplicity, Inc. Method and system for debugging an electronic system using instrumentation circuitry and a logic analyzer
US7240303B1 (en) 1999-11-30 2007-07-03 Synplicity, Inc. Hardware/software co-debugging in a hardware description language
US6823497B2 (en) 1999-11-30 2004-11-23 Synplicity, Inc. Method and user interface for debugging an electronic system
US7072818B1 (en) 1999-11-30 2006-07-04 Synplicity, Inc. Method and system for debugging an electronic system
US7356786B2 (en) * 1999-11-30 2008-04-08 Synplicity, Inc. Method and user interface for debugging an electronic 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
DE60139219D1 (de) * 2000-03-02 2009-08-27 Texas Instruments Inc Dynamisch konfigurierbare Debug-Schnittstelle mit gleichzeitiger Verwendung von Fehlerbeseitigung von mehreren Prozessorkernen
US6985848B2 (en) 2000-03-02 2006-01-10 Texas Instruments Incorporated Obtaining and exporting on-chip data processor trace and timing information
US6961691B1 (en) * 2000-03-30 2005-11-01 Mentor Graphics Corporation Non-synchronized multiplex data transport across synchronous systems
US6697957B1 (en) 2000-05-11 2004-02-24 Quickturn Design Systems, Inc. Emulation circuit with a hold time algorithm, logic analyzer and shadow memory
WO2001086513A2 (en) * 2000-05-11 2001-11-15 Quickturn Design Systems, Inc. Emulation circuit with a hold time algorithm, logic analyzer and shadow memory
US6437713B1 (en) * 2000-10-06 2002-08-20 Xilinx, Inc. Programmable logic device having amplitude and phase modulation communication
US7222315B2 (en) * 2000-11-28 2007-05-22 Synplicity, Inc. Hardware-based HDL code coverage and design analysis
US6978231B2 (en) 2000-12-05 2005-12-20 Derek Edward Williams Embedded hardware description language instrumentation
US7039574B1 (en) * 2000-12-29 2006-05-02 International Business Machines Corporation Naming and managing simulation model events
US7092864B2 (en) * 2000-12-29 2006-08-15 International Business Machines Corporation Signal override for simulation models
US6920418B2 (en) 2000-12-30 2005-07-19 International Business Machines Corporation Detecting events within simulation models
US6941257B2 (en) * 2000-12-30 2005-09-06 International Business Machines Corporation Hierarchical processing of simulation model events
US20020128809A1 (en) * 2000-12-30 2002-09-12 International Business Machines Corporation Randomized simulation model instrumentation
US7076595B1 (en) * 2001-05-18 2006-07-11 Xilinx, Inc. Programmable logic device including programmable interface core and central processing unit
US7310757B2 (en) * 2001-10-11 2007-12-18 Altera Corporation Error detection on programmable logic resources
US7035787B2 (en) 2001-10-30 2006-04-25 Mentor Graphics Corporation Emulation components and system including distributed routing and configuration of emulation resources
US7130788B2 (en) 2001-10-30 2006-10-31 Mentor Graphics Corporation Emulation components and system including distributed event monitoring, and testing of an IC design under emulation
US7305633B2 (en) * 2001-10-30 2007-12-04 Mentor Graphics Corporation Distributed configuration of integrated circuits in an emulation system
WO2003038613A1 (en) * 2001-10-30 2003-05-08 Mentor Graphics Corporation Emulating components and system including distributed emulation methods
US7359847B2 (en) * 2001-11-30 2008-04-15 International Business Machines Corporation Tracking converage results in a batch simulation farm network
US7827510B1 (en) 2002-06-07 2010-11-02 Synopsys, Inc. Enhanced hardware debugging with embedded FPGAS in a hardware description language
JP3610978B2 (ja) * 2002-06-13 2005-01-19 株式会社村田製作所 モジュール試験装置
KR100423891B1 (ko) * 2002-06-21 2004-03-22 삼성전자주식회사 트레이스 모듈을 구비한 마이크로프로세서
US20040078656A1 (en) * 2002-06-26 2004-04-22 Mike Ryken Method of saving/restoring processor state after entering/exiting debug mode
US7127695B2 (en) * 2002-07-18 2006-10-24 Incentia Design Systems Corp. Timing based scan chain implementation in an IC design
US6973631B2 (en) * 2002-07-18 2005-12-06 Incentia Design Systems Corp. Scan insertion with bypass login in an IC design
US7235316B2 (en) * 2002-08-07 2007-06-26 Mti Microfuel Cells Inc. Integrated heat management of electronics and fuel cell power system
EP1403652A1 (de) * 2002-09-30 2004-03-31 Siemens Aktiengesellschaft Verfahren und Vorrichtung zur Prüfung der Abbildung/Implementierung eines Modells eines logischen Schaltkreises auf einen/in einem Hardware-Emulator
US7440884B2 (en) * 2003-01-23 2008-10-21 Quickturn Design Systems, Inc. Memory rewind and reconstruction for hardware emulator
JP2004234530A (ja) * 2003-01-31 2004-08-19 Fujitsu Ten Ltd マイクロコンピュータのロジック開発装置
US20040228411A1 (en) * 2003-05-12 2004-11-18 Sony Corporation Method and system for decoder clock control in presence of jitter
US8099273B2 (en) * 2003-06-05 2012-01-17 Mentor Graphics Corporation Compression of emulation trace data
US7184946B2 (en) * 2003-06-19 2007-02-27 Xilinx, Inc. Co-simulation via boundary scan interface
US6952813B1 (en) 2003-07-30 2005-10-04 Xilinx, Inc. Method and apparatus for selecting programmable interconnects to reduce clock skew
US20050086042A1 (en) * 2003-10-15 2005-04-21 Gupta Shiv K. Parallel instances of a plurality of systems on chip in hardware emulator verification
DE10355187B4 (de) * 2003-11-26 2006-05-24 Infineon Technologies Ag Verfahren und Vorrichtung zur Timinganalyse einer Schaltung
US7738399B2 (en) * 2004-06-01 2010-06-15 Quickturn Design Systems Inc. System and method for identifying target systems
US7739093B2 (en) * 2004-06-01 2010-06-15 Quickturn Design System, Inc. Method of visualization in processor based emulation system
US7412544B2 (en) 2004-06-18 2008-08-12 International Business Machines Corporation Reconfigurable USB I/O device persona
US7368941B2 (en) * 2005-02-23 2008-05-06 Cswitch Corporation Dedicated logic cells employing sequential logic and control logic functions
US7358765B2 (en) * 2005-02-23 2008-04-15 Cswitch Corporation Dedicated logic cells employing configurable logic and dedicated logic functions
US7353162B2 (en) * 2005-02-11 2008-04-01 S2C, Inc. Scalable reconfigurable prototyping system and method
US8205186B1 (en) 2005-04-11 2012-06-19 Synopsys, Inc. Incremental modification of instrumentation logic
US20060247909A1 (en) * 2005-04-27 2006-11-02 Desai Madhav P System and method for emulating a logic circuit design using programmable logic devices
US7751436B2 (en) * 2005-05-24 2010-07-06 Sony Corporation System and method for dynamically establishing PLL speed based on receive buffer data accumulation for streaming video
JP2007026170A (ja) * 2005-07-19 2007-02-01 Matsushita Electric Ind Co Ltd 半導体集積回路の自動レイアウト方法、自動レイアウトプログラム、および自動レイアウト装置
US7523297B1 (en) * 2005-09-16 2009-04-21 Sun Microsystems, Inc. Shadow scan decoder
US7600168B2 (en) * 2005-12-26 2009-10-06 Prolific Technology Inc. Apparatus with programmable scan chains for multiple chip modules and method for programming the same
US7739552B2 (en) * 2006-02-17 2010-06-15 Lanning Eric J Tapping a memory card
WO2007096376A1 (en) * 2006-02-21 2007-08-30 Mentor Graphics Corporation Communication scheme between programmable sub-cores in an emulation environment
US7555424B2 (en) 2006-03-16 2009-06-30 Quickturn Design Systems, Inc. Method and apparatus for rewinding emulated memory circuits
KR101282963B1 (ko) * 2006-05-12 2013-07-08 삼성전자주식회사 에뮬레이션 시스템 및 그 방법
US7725304B1 (en) * 2006-05-22 2010-05-25 Cadence Design Systems, Inc. Method and apparatus for coupling data between discrete processor based emulation integrated chips
CN100410887C (zh) * 2006-09-18 2008-08-13 中国航天时代电子公司第七七一研究所 基于信号类别的分布式仿真测试系统体系的构建方法
US7606698B1 (en) * 2006-09-26 2009-10-20 Cadence Design Systems, Inc. Method and apparatus for sharing data between discrete clusters of processors
US7904288B1 (en) * 2006-11-06 2011-03-08 Cadence Design Systems, Inc. Hardware emulator having a variable input emulation group
US20080148214A1 (en) * 2006-12-15 2008-06-19 Yancey Jerry W Method and system for configuring FPGAs from VHDL code with reduced delay from large multiplexers
US8234624B2 (en) 2007-01-25 2012-07-31 International Business Machines Corporation System and method for developing embedded software in-situ
US8296121B2 (en) * 2007-04-25 2012-10-23 Cadence Design Systems, Inc. Method and apparatus for controlling power in an emulation system
US7904859B2 (en) * 2007-05-09 2011-03-08 Synopsys, Inc. Method and apparatus for determining a phase relationship between asynchronous clock signals
US8756557B2 (en) * 2007-05-09 2014-06-17 Synopsys, Inc. Techniques for use with automated circuit design and simulations
US7930165B2 (en) * 2008-02-07 2011-04-19 Accemic Gmbh & Co. Kg Procedure and device for emulating a programmable unit providing system integrity control
US20090259457A1 (en) * 2008-04-14 2009-10-15 Mentor Graphics Corporaton Trace Routing Network
US8327198B2 (en) * 2009-08-14 2012-12-04 Intel Corporation On-die logic analyzer for semiconductor die
US9170901B2 (en) 2009-08-18 2015-10-27 Lexmark International, Inc. System and method for analyzing an electronics device including a logic analyzer
US8745447B2 (en) * 2009-08-18 2014-06-03 Lexmark International, Inc. System and method for analyzing an electronics device including a logic analyzer
US8473887B2 (en) * 2011-03-16 2013-06-25 Oracle America, Inc. Event scheduler for an electrical circuit design to account for hold time violations
CN102957424B (zh) * 2011-08-22 2016-08-24 上海华虹集成电路有限责任公司 用于ISO14443 TypeA协议的凹槽信号恢复电路
US8595683B1 (en) 2012-04-12 2013-11-26 Cadence Design Systems, Inc. Generating user clocks for a prototyping environment
FR2991476B1 (fr) * 2012-06-01 2022-04-22 Flexras Tech Prototypage multi-fpga d'un circuit asic
US9405877B1 (en) 2014-12-22 2016-08-02 Cadence Design Systems, Inc. System and method of fast phase aligned local generation of clocks on multiple FPGA system
US9495492B1 (en) 2015-01-05 2016-11-15 Cadence Design Systems, Inc. Implementing synchronous triggers for waveform capture in an FPGA prototyping system
US9294094B1 (en) 2015-01-08 2016-03-22 Cadence Design Systems, Inc. Method and apparatus for fast low skew phase generation for multiplexing signals on a multi-FPGA prototyping system
US10116557B2 (en) * 2015-05-22 2018-10-30 Gray Research LLC Directional two-dimensional router and interconnection network for field programmable gate arrays, and other circuits and applications of the router and network
US10860763B1 (en) 2015-09-24 2020-12-08 Cadence Design Systems, Inc. Data routing and multiplexing architecture to support serial links and advanced relocation of emulation models
US9910810B1 (en) * 2015-10-23 2018-03-06 Cadence Design Systems, Inc. Multiphase I/O for processor-based emulation system
US10068041B2 (en) * 2016-02-01 2018-09-04 King Fahd University Of Petroleum And Minerals Multi-core compact executable trace processor
US10587534B2 (en) 2017-04-04 2020-03-10 Gray Research LLC Composing cores and FPGAS at massive scale with directional, two dimensional routers and interconnection networks
US10841246B2 (en) 2017-08-30 2020-11-17 Arista Networks, Inc. Distributed core switching with orthogonal fabric card and line cards
TWI665870B (zh) * 2018-02-01 2019-07-11 緯穎科技服務股份有限公司 電子系統及信號切換電路
US10922203B1 (en) * 2018-09-21 2021-02-16 Nvidia Corporation Fault injection architecture for resilient GPU computing
US11573883B1 (en) * 2018-12-13 2023-02-07 Cadence Design Systems, Inc. Systems and methods for enhanced compression of trace data in an emulation system
US20200195586A1 (en) * 2018-12-18 2020-06-18 Arista Networks, Inc. Network devices with multiple switch cards
US10986423B2 (en) 2019-04-11 2021-04-20 Arista Networks, Inc. Network device with compact chassis
TWI698088B (zh) * 2019-08-22 2020-07-01 瑞昱半導體股份有限公司 應用於多個操作模式的電路
US10902175B1 (en) 2019-09-11 2021-01-26 International Business Machines Corporation Cross-hierarchical block pin placement
US11266007B2 (en) 2019-09-18 2022-03-01 Arista Networks, Inc. Linecard system using riser printed circuit boards (PCBS)

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3149460C2 (de) * 1981-12-14 1984-04-12 Rohde & Schwarz GmbH & Co KG, 8000 München Logikanalysator
US4924468A (en) * 1987-11-30 1990-05-08 Kontron Holding Ag Logic analyzer
US5452231A (en) * 1988-10-05 1995-09-19 Quickturn Design Systems, Inc. Hierarchically connected reconfigurable logic assembly
AU4347189A (en) * 1988-10-05 1990-05-01 Mentor Graphics Corporation Method of using electronically reconfigurable gate array logic and apparatus formed thereby
US5109353A (en) * 1988-12-02 1992-04-28 Quickturn Systems, Incorporated Apparatus for emulation of electronic hardware system
US5329470A (en) * 1988-12-02 1994-07-12 Quickturn Systems, Inc. Reconfigurable hardware emulation system
US5377124A (en) * 1989-09-20 1994-12-27 Aptix Corporation Field programmable printed circuit board
US5352123A (en) * 1992-06-08 1994-10-04 Quickturn Systems, Incorporated Switching midplane and interconnection system for interconnecting large numbers of signals
WO1994003856A1 (en) * 1992-08-07 1994-02-17 Massachusetts Institute Of Technology Column-associative cache
US5425036A (en) * 1992-09-18 1995-06-13 Quickturn Design Systems, Inc. Method and apparatus for debugging reconfigurable emulation systems
US5483178A (en) * 1993-03-29 1996-01-09 Altera Corporation Programmable logic device with logic block outputs coupled to adjacent logic block output multiplexers
SE9303538L (sv) * 1993-10-28 1994-10-17 Skf Ab Flerradigt sfäriskt rullager
TW253031B (ko) * 1993-12-27 1995-08-01 At & T Corp
US5550843A (en) * 1994-04-01 1996-08-27 Xilinx, Inc. Programmable scan chain testing structure and method
US5630048A (en) * 1994-05-19 1997-05-13 La Joie; Leslie T. Diagnostic system for run-time monitoring of computer operations
WO1996013902A1 (en) * 1994-11-01 1996-05-09 Virtual Machine Works, Inc. Programmable multiplexing input/output port
US5659716A (en) * 1994-11-23 1997-08-19 Virtual Machine Works, Inc. Pipe-lined static router and scheduler for configurable logic system performing simultaneous communications and computation
US5649176A (en) * 1995-08-10 1997-07-15 Virtual Machine Works, Inc. Transition analysis and circuit resynthesis method and device for digital circuit modeling
US5574388A (en) * 1995-10-13 1996-11-12 Mentor Graphics Corporation Emulation system having a scalable multi-level multi-stage programmable interconnect network
US5754827A (en) * 1995-10-13 1998-05-19 Mentor Graphics Corporation Method and apparatus for performing fully visible tracing of an emulation
US5777489A (en) * 1995-10-13 1998-07-07 Mentor Graphics Corporation Field programmable gate array with integrated debugging facilities
US5790832A (en) * 1996-04-23 1998-08-04 Mentor Graphics Corporation Method and apparatus for tracing any node of an emulation
US5841967A (en) * 1996-10-17 1998-11-24 Quickturn Design Systems, Inc. Method and apparatus for design verification using emulation and simulation

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100794916B1 (ko) * 2001-09-14 2008-01-14 양세양 에뮬레이션과 시뮬레이션을 혼용한 점진적 설계 검증을위한 설계검증 장치 및 이를 이용한 설계 검증 방법
KR101524828B1 (ko) * 2008-04-23 2015-06-02 삼성전자주식회사 에뮬레이션 시스템 및 그 구동 방법
KR102319160B1 (ko) * 2020-07-14 2021-11-01 주식회사 엑시콘 반도체 디바이스 테스트 시스템
KR20220069559A (ko) * 2020-11-20 2022-05-27 주식회사 에스디에이 고속 신호 특성 검증을 위한 지능형 프로브 카드

Also Published As

Publication number Publication date
IL132984A0 (en) 2001-03-19
DE69826859D1 (de) 2004-11-11
JP2002501646A (ja) 2002-01-15
EP0985175B1 (en) 2004-10-06
EP0985175A1 (en) 2000-03-15
US5943490A (en) 1999-08-24
DE69826859T2 (de) 2005-12-29
US20020177990A1 (en) 2002-11-28
ATE278986T1 (de) 2004-10-15
TW424199B (en) 2001-03-01
WO1998054649A1 (en) 1998-12-03
JP4225583B2 (ja) 2009-02-18
CA2291257A1 (en) 1998-12-03

Similar Documents

Publication Publication Date Title
US5943490A (en) Distributed logic analyzer for use in a hardware logic emulation system
US5960191A (en) Emulation system with time-multiplexed interconnect
US6694464B1 (en) Method and apparatus for dynamically testing electrical interconnect
US6223148B1 (en) Logic analysis system for logic emulation systems
US6810442B1 (en) Memory mapping system and method
JP3354143B2 (ja) 電気的に再構成可能なゲートアレイを用いて論理構成を構築する方法
US5452231A (en) Hierarchically connected reconfigurable logic assembly
US7512728B2 (en) Inter-chip communication system
EP2100242B1 (en) Conversion of a synchronous fpga design into an asynchronous fpga design
US7822909B2 (en) Cross-bar switching in an emulation environment
US20060036427A1 (en) Managing communication bandwidth in co-verification of circuit designs
WO2002041167A2 (en) Method and apparatus for dynamically testing electrical interconnect
Lossky FPGA DESIGN USING VHDL MODELING
Lindh et al. SEPTEMBER 11 AND 13 LUND AND STOCKHOLM, SWEDEN

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
NORF Unpaid initial registration fee