KR20210065964A - 에뮬레이션 및 프로토타이핑에서 오버레이된 클록 및 데이터 전파의 코히어런트 관찰가능성 및 제어가능성 - Google Patents

에뮬레이션 및 프로토타이핑에서 오버레이된 클록 및 데이터 전파의 코히어런트 관찰가능성 및 제어가능성 Download PDF

Info

Publication number
KR20210065964A
KR20210065964A KR1020217011251A KR20217011251A KR20210065964A KR 20210065964 A KR20210065964 A KR 20210065964A KR 1020217011251 A KR1020217011251 A KR 1020217011251A KR 20217011251 A KR20217011251 A KR 20217011251A KR 20210065964 A KR20210065964 A KR 20210065964A
Authority
KR
South Korea
Prior art keywords
clock
signal
delay
emulation
flip
Prior art date
Application number
KR1020217011251A
Other languages
English (en)
Inventor
알렉산더 라비노비치
보잔 미하로빅
자비에르 구에린
마니쉬 샤로프
Original Assignee
시놉시스, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 시놉시스, 인크. filed Critical 시놉시스, 인크.
Publication of KR20210065964A publication Critical patent/KR20210065964A/ko

Links

Images

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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/06Clock generators producing several clock signals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/08Clock generators with changeable or programmable clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/36Circuit design at the analogue level
    • G06F30/367Design verification, e.g. using simulation, simulation program with integrated circuit emphasis [SPICE], direct methods or relaxation methods
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/20Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
    • H03K19/21EXCLUSIVE-OR circuits, i.e. giving output if input signal exists at only one input; COINCIDENCE circuits, i.e. giving output only if all input signals are identical
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/18Manufacturability analysis or optimisation for manufacturability
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K5/00Manipulating of pulses not covered by one of the other main groups of this subclass
    • H03K5/153Arrangements in which a pulse is delivered at the instant when a predetermined characteristic of an input signal is present or at a fixed time interval after this instant
    • H03K5/1534Transition or edge detectors

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

본 출원의 독립항들은 실시예들의 간략한 설명을 의미한다. 에뮬레이션 제어 블록은, 사용자가 동일한 로직 기준 사이클에서 중단된 설계를 관찰 및 제어할 수 있도록 사용자가 동일한 위상에서 전체 설계를 뷰잉할 수 있게 한다. 기준 시간의 사이클 K의 평가 후에 발생하는 상태에서 클록 콘(cone) 및 설계 플롭들 둘 모두가 제공된다. 에뮬레이션의 사이클 K+1 동안, 사이클 K+1에 대한 유도된 클록들의 값들이 컴퓨팅된다. 또한, 에뮬레이션의 사이클 K+1 동안, 클록들의 사이클 K 값들에 기초하여 순차적 요소들의 값들이 컴퓨팅된다. 브레이크로 인해 에뮬레이션이 중단될 때, 클록 콘은 자신의 이전 상태로 회귀된다. 이 요약은 청구항들의 범위를 제한하려는 의도가 아니다.

Description

에뮬레이션 및 프로토타이핑에서 오버레이된 클록 및 데이터 전파의 코히어런트 관찰가능성 및 제어가능성
관련 출원들에 대한 상호 참조
본 출원은, 2018년 9월 25일에 출원된 미국 출원 일련번호 62/736,111호에 대해 35 USC 119(e) 하의 이익을 주장하며, 상기 출원의 내용은 그 전체가 참조로 본원에 통합된다.
저작권 고지
본 특허 문서의 양수인은, 미국 특허 상표청의 파일들에 나타난 것처럼 특허 문서 자체 또는 특허 출원의 누군가에 의한 팩스 복제를 반대하지 않지만, 저작권에 의해 보호되는 임의의 저작물들에 포함되는 모든 권리들을 보유한다.
명세서-권리포기
하기 배경, 요약 및 상세한 설명에서, 제목들은 반드시 제한적인 것으로 해석되지 않아야 한다. 하기 배경, 요약 및 상세한 설명에서, 임의의 공개에 대한 인용 또는 식별은 청구되거나 설명되는 실시예들 중 임의의 것에 대한 선행 기술로서의 관련성 또는 상태를 의미하지 않는다. 텍스트 모두가 이탤릭체로 된 단락들은 다수의 시놉시스 특허 명세서들에 공통인 텍스트를 의미한다.
종래의 하드웨어 에뮬레이션 시스템들에서, 에뮬레이션 사이클은 클록들 및 데이터 입력들이 평가되는 2개의 위상들로 분할된다. 초기에, 유도된 클록들의 값들은 1차 데이터 입력들의 변화에 응답하여 평가된다. 이어서, 평가된 클록들은 플립-플롭(flip-flop)들 및 래치(latch)들에 적용되어, 이러한 순차적 요소들의 업데이트된 출력들이 설계의 나머지를 통해 전파할 수 있게 한다. 즉, 종래의 하드웨어 에뮬레이션 시스템들은 설계에 배치된 순차적 요소들을 평가하기 전에 클록들이 완전히 전파할 것을 요구한다. 종래의 시스템들에서 클록 및 데이터의 이러한 직렬 평가들은 에뮬레이션 속도를 느리게 하고 비효율성들을 야기한다. 따라서, 개선된 하드웨어 에뮬레이션 시스템에 대한 요구가 계속 존재한다.
청구항들은 본 개시 내에서 발견되는 혁신들, 실시예들 및/또는 예들 중 하나 이상의 간략한 설명을 의미한다.
본 요약은, 임의의 특정 혁신, 실시예 또는 예의 필수 요소를 상업적으로 사용될 수 있는 것으로 완전히 의미하려 시도하지 않는다. 추가적으로, 이 요약은 혁신, 실시예 또는 예의 필수 요소들을 의미하거나 본 개시의 주제의 범위를 제한하도록 의도되지 않는다.
본 개시 내에서 발견되는 혁신들, 실시예들 및/또는 예들은 모두 포함하는 것이 아니라 오히려 본 주제의 기본적 중요성을 설명한다. 따라서, 이 요약의 용도는 추후에 제시되는 상세한 설명에 대한 서문이다.
에뮬레이팅된 설계 수단에서 유도된 클록들 및 데이터 플롭/래치 평가 둘 모두를 오버레이하는 것은 직렬적보다는 병렬적으로 평가될 수 있다. 이러한 방식은 에뮬레이션 성능을 향상시키는 반면, 임의의 순간에 에뮬레이팅된 설계의 상태는 브레이크 포인트에 직면되면 관찰가능성 또는 제어가능성을 실행하기를 원하는 사용자에게 반직관적(counterintuitive)일 수 있다.
브레이크 포인트에 도달되면, 새로운 클록 및 데이터 입력들이 설계에 적용되는 것을 방지함으로써 추가적 설계 평가는 일시정지될 것이다. 이러한 포인트에서, 중단된 설계는, 설계 플롭들이 기준 시간의 사이클 K를 평가한 반면 클록 콘이 사이클 K+1을 평가한 상태에 있는 것으로 나타날 것이다.
에뮬레이션 모듈은 전체 설계가 동일한 위상에서 사용자에게 제시되는 것을 허용하며, 이는, 사용자가 동일한 로직 기준 사이클에서 정지된 설계를 관찰 또는 제어할 수 있기 위해 기대하는 것이다. 기준 시간의 사이클 K의 평가 후에 발생하는 상태에서 클록 콘 및 설계 플롭들 둘 모두가 제시될 것이다. 그 목표를 달성하기 위해, 현재 클록 사이클의 평가 동안 임의의 포인트에서 브레이크 포인트가 검출되면 클록 콘은 자신의 이전 상태로 회귀된다.
설계의 코히어런트 뷰를 사용자에게 제공함으로써, 설계 상태들은 다른 에뮬레이터, 시뮬레이터 또는 실제 하드웨어의 출력과 직접 비교될 수 있다. 이를 수행할 때, 설계에 적용된 기본적인 변환들의 복잡성이 숨겨진다. 에뮬레이션 모듈이 없으면, 클록 및 데이터 평가를 오버레이함으로써 실현되는 성능 개선은 종래의 브레이크 포인트 거동을 기대하는 사용자들에 대해서는 가능하게 않을 수 있다.
본 발명의 일 실시예에 따른 하드웨어 에뮬레이션 시스템 제어 블록은, 부분적으로, 에뮬레이션 시스템에서 사용되는 N개의 클록 신호들 중 상이한 클록 신호와 연관된 지연 값을 표현하는 제1 신호를 각각 수신하는 N개의 지연 블록들을 포함하고, 각각의 클록 신호와 연관된 지연 값은 클록 신호의 전이(transition) 시간들을 정의한다. 하드웨어 에뮬레이션 시스템 제어 블록은, 부분적으로, N개의 지연 값들의 최소값을 계산하도록 적응된 최소 지연 계산기 블록, 최소 지연에 매칭하는 연관된 지연 값을 갖는 각각의 클록에 대한 전이를 스케줄링하도록 구성된 클록 스케줄러를 더 포함한다. 클록 스케줄러는 최소 지연 값에 매칭하지 않는 지연 값을 갖는 각각의 클록의 연관된 지연을 최소 지연만큼 감분시키도록 추가로 구성된다. 클록 스케줄러는 N개의 지연 블록들 각각에 최소 지연을 공급한다. 하드웨어 에뮬레이션 시스템 제어 블록은 부분적으로, 클록 스케줄러에 의해 결정되는 클록 신호들에 대한 전이들을 야기하도록 구성된 클록 신호 생성기를 더 포함한다.
일 실시예에서, 하드웨어 에뮬레이션 시스템 제어 블록은, 부분적으로, N개의 지연 블록들 중 상이한 지연 블록과 각각 연관되고 자신의 연관된 지연 블록의 출력을 수신하도록 적응된 N개의 플립-플롭들, 및 N개의 지연 블록들 중 상이한 지연 블록과 각각 연관되고 자신의 연관된 지연 블록의 출력을 자신의 제1 입력에서 수신하도록 적응된 N개의 멀티플렉서들을 더 포함한다. 제1 N개의 멀티플렉서들 각각은 자신의 연관된 플립-플롭의 출력을 수신하도록 적응된 제2 입력을 갖는다. 각각의 멀티플렉서는 트리거 신호가 어서트될 때 최소 지연 계산기에 자신의 제2 입력을 전달하도록 적응된 선택 단자를 갖는다. 트리거 신호는 사용자에 의해 삽입된 에뮬레이션 브레이크에 응답하여 설계의 에뮬레이션을 중단한다.
일 실시예에서, 하드웨어 에뮬레이션 시스템 제어 블록은, 부분적으로, 클록 생성기의 출력을 수신하도록 적응된 제2 제1 플립-플롭, 및 자신의 제1 입력에서 클록 스케줄러의 출력 및 자신의 제2 입력에서 제2 플립-플롭의 출력을 수신하도록 적응된 제2 멀티플렉서를 더 포함한다. 멀티플렉서는 트리거 신호가 어서트되지 않으면 자신의 출력에 자신의 제1 입력을 전달한다. 멀티플렉서는 트리거 신호가 어서트되면 자신의 출력에 자신의 제2 입력을 전달한다. 제2 멀티플렉서의 출력은 회로 설계를 에뮬레이팅하는 하드웨어 에뮬레이션 시스템에 적용된다.
일 실시예에서, 하드웨어 에뮬레이션 시스템 제어 블록은 에뮬레이션의 사이클 K+1 동안 클록 신호들의 에뮬레이션 사이클 K에 대응하는 순차적 요소들의 값들을 컴퓨팅한다. 일 실시예에서, 하드웨어 에뮬레이션 시스템 제어 블록은 에뮬레이션의 사이클 K+1 동안 에뮬레이션의 사이클 K+1에 대한 클록들의 값들을 컴퓨팅한다.
일 실시예에서, 각각의 지연 블록은 부분적으로, 자신의 제1 입력에서 최소 지연을 수신하도록 적응된 감산기, 지연 블록의 출력을 수신하고 감산기의 제2 입력에 자신의 출력을 공급하는 제1 플립-플롭, 제1 입력에서 최소 지연 및 제2 입력에서 지연 블록의 출력을 수신하는 XOR 게이트, XOR의 출력을 수신하는 제2 플립-플롭, 및 자신의 제1 입력에서 블록과 연관된 지연 값 및 자신의 제2 입력에서 감산기의 출력을 수신하는 멀티플렉서를 포함한다. 멀티플렉서는 제2 플립-플롭의 출력 신호에 응답하여 자신의 출력을 공급한다.
일 실시예에서, 하드웨어 에뮬레이션 시스템 제어 블록은, 부분적으로, 제1 신호를 생성하기 위해 N개의 클록 신호들 중 적어도 제1 클록 신호의 에지들을 검출하도록 구성된 에지 검출기, 자신의 인에이블 핀에서 제1 신호 및 자신의 클록 핀에서 시스템 클록을 수신하는 제1 플립-플롭, 자신의 인에이블 핀에서 제1 신호 및 자신의 클록 핀에서 시스템 클록을 수신하는 제2 플립-플롭, 및 제1 플립-플롭의 출력 신호를 수신하고 제2 플립-플롭의 데이터 입력에 데이터를 전달하는 조합 로직을 더 포함한다.
본 발명의 일 실시예에 따른 로직 회로는 부분적으로, 클록 신호의 에지들을 검출하고 제1 신호를 생성하도록 구성된 에지 검출기, 자신의 인에이블 핀에서 제1 신호 및 자신의 클록 핀에서 시스템 클록을 수신하는 제1 플립-플롭, 자신의 인에이블 핀에서 제1 신호 및 자신의 클록 핀에서 시스템 클록을 수신하는 제2 플립-플롭, 및 제1 플립-플롭의 출력 신호를 수신하고 제2 플립-플롭의 데이터 입력에 데이터를 공급하는 조합 로직을 포함한다.
본 발명의 일 실시예에 따른 로직 설계의 하드웨어 에뮬레이션을 제어하는 방법은 부분적으로, N개의 클록 신호들 중 상이한 클록 신호 각각과 연관된 지연 값을 표현하는 신호를 수신하는 단계 - 각각의 클록 신호와 연관된 지연 값은 클록 신호의 전이 시간들을 정의함 -, N개의 지연 값들의 최소값을 계산하는 단계, 최소 지연에 매칭하는 연관된 지연 값을 갖는 각각의 클록에 대한 전이를 스케줄링하는 단계, 최소 지연 값에 매칭하지 않는 지연 값을 갖는 각각의 클록의 연관된 지연을 최소 지연만큼 감분시키는 단계, 및 스케줄링된 전이들 또는 감분된 지연들에 따라 클록 신호들에 대한 전이들을 생성하는 단계를 포함한다.
일 실시예에서, 방법은 부분적으로, N개의 클록들 각각에 대해, 직전 사이클의 증분된 지연 또는 스케줄링된 전이 중 하나를 저장하는 단계, 트리거 신호에 응답하여 감분된 지연 또는 저장된 스케줄링된 전이를 전달하는 단계, 직전 클록 신호들의 생성된 전이들을 저장하는 단계, 및 각각의 클록 신호에 대해, 트리거 신호에 응답하여 자신의 현재 전이 또는 클록 신호의 직전 전이 중 어느 하나를 전달하는 단계를 더 포함한다.
일 실시예에서, 방법은 부분적으로, 에뮬레이션의 사이클 K+1 동안 클록 신호들의 에뮬레이션 사이클 K에 대응하는 순차적 요소들의 값들을 컴퓨팅하는 단계를 더 포함한다. 일 실시예에서, 방법은 부분적으로, 에뮬레이션의 사이클 K+1 동안 에뮬레이션의 사이클 K+1에 대한 클록들의 값들을 컴퓨팅하는 단계를 더 포함한다.
일 실시예에서, 방법은 부분적으로, 제1 신호를 생성하기 위해 N개의 클록 신호들 중 적어도 제1 클록 신호의 에지들을 검출하는 단계, 자신의 클록 핀에서 시스템 클록을 수신하는 제1 플립-플롭의 인에이블 핀에 제1 신호를 적용하는 단계, 자신의 클록 핀에서 시스템 클록을 수신하는 제2 플립-플롭의 인에이블 핀에 제1 신호를 적용하는 단계, 조합 로직의 입력에 제1 플립-플롭의 출력을 적용하는 단계, 및 제2 플립-플롭의 데이터 입력에 조합의 출력을 적용하는 단계를 더 포함한다.
일 실시예에서, 본 발명의 일 실시예에 따라 데이터 및 클록 신호들을 파이프라이닝하는 방법은 부분적으로, 제1 신호를 생성하기 위해 N개의 클록 신호들 중 적어도 제1 클록 신호의 에지들을 검출하는 단계, 자신의 클록 핀에서 시스템 클록을 수신하는 제1 플립-플롭의 인에이블 핀에 제1 신호를 적용하는 단계, 자신의 클록 핀에서 시스템 클록을 수신하는 제2 플립-플롭의 인에이블 핀에 제1 신호를 적용하는 단계, 조합 로직의 입력에 제1 플립-플롭의 출력을 적용하는 단계, 및 제2 플립-플롭의 데이터 입력에 조합의 출력을 적용하는 단계를 포함한다.
하기 상세한 설명, 도면들, 첨부된 추가적인 도면들 및 첨부된 청구항들은 청구된 발명들의 혁신들, 실시예들 및/또는 예들의 성질 및 이점들을 의미한다. 모든 도면들은 단지 예시의 목적으로 청구된 발명들의 혁신들, 실시예들 및/또는 예들을 의미하고 청구된 발명들의 범위를 제한하지 않는다. 이러한 도면들은 반드시 축척대로 도시되지 않으며 본 개시의 일부이다.
도면들에서, 유사한 컴포넌트들 또는 특징들은 (영숫자 심볼들, 예를 들어, 참조 부호들과 같은) 라벨들의 형태로 동일하거나 유사한 기준 부호들을 가질 수 있고 유사하거나 동등한 기능을 의미할 수 있다. 추가로, 동일한 타입의 다양한 컴포넌트들은, 참조 라벨 다음에 대시기호 및 유사한 컴포넌트들 사이를 구별하는 제2 라벨에 의해 구별될 수 있다. 본 명세서에서 제1 참조 라벨만이 사용되면, 그 설명은, 제2 참조 라벨과는 무관하게 동일한 제1 참조 라벨을 갖는 유사한 컴포넌트들 중 임의의 컴포넌트에 적용가능하다. 도면의 간단한 설명이 후속된다.
도 1은 본 발명의 일 실시예에 따른, 하드웨어 에뮬레이션 제어 블록의 단순화된 하이 레벨 블록도이다.
도 2는 본 발명의 일 실시예에 따른, 다수의 클록 신호들 Clk1 및 Clk2 및 이들의 대응하는 글로벌 최소값 및 글로벌 시간의 타이밍도이다.
도 3은 본 발명의 일 실시예에 따른, 하드웨어 에뮬레이션 제어 블록에서 사용되는 지연 블록의 개략도이다.
도 4는 본 발명의 일 실시예에 따른, 파이프라이닝된 방식으로 데이터 및 클록 신호들의 병렬적 평가를 가능하게 하는 로직 회로의 단순화된 예시적인 블록도이다.
도 5는 본 개시의 실시예에 따른 집적 회로의 설계 및 제조에서 다양한 동작들의 흐름도이다.
도 6a, 도 6b 및 도 6c는 본 기술의 회로 설계 및 회로 실시예들뿐만 아니라 본 기술의 실시예들과 함께 사용하기에 적합한 컴퓨터 시스템의 단순화된 블록도들이다.
도 7은 에뮬레이션 시스템의 블록도이다.
이러한 다양한 도면들에서, 참조 부호들은 허용된 엔지니어링 관례와 일치하도록 생략될 수 있지만; 당업자는, 이러한 다양한 도면들을 설명하는 첨부된 개시 및 전체적인 예시의 맥락에서 볼 때 예시된 컴포넌트들이 쉽게 이해됨을 이해할 것이다.
도면들 및 하기 상세한 설명은 혁신들, 실시예들 및/또는 예들을 오직 예시의 방식으로 의미하며, 다양한 특징들, 구조들 또는 특성들은 본 개시를 간소화하기 위해 단일 실시예에서 함께 설명된다. 이러한 예시적인 혁신들, 실시예들 및/또는 예들에 의해 개시된 요소들, 프로세스들, 머신들, 시스템들, 제조물들 또는 조성들 중 임의의 것의 변형들은 쉽게 인식될 것이고, 청구물의 원리들로부터 벗어남이 없이 상업적으로 사용될 수 있다. 도면들 및 상세한 설명은 또한 본 명세서에 설명된 예시적인 실시예들의 서브세트의 이점들 및 개선들을 묵시적으로 또는 명시적으로 의미할 수 있다.
도면들 및 상세한 설명들에서, 예시적인 혁신들, 실시예들 및/또는 예들 중 하나 이상을 가능하게 하기 위해 다수의 특정 세부사항들이 설명될 수 있다. 다음의 상세한 설명에서 예시적인 혁신들, 실시예들 및/또는 예들의 제시를 모호하게 하지 않기 위해, 당업계에 공지된 일부 프로세싱 단계들 또는 동작들은 제시 및 예시 목적을 위해 함께 조합될 수 있으며 상세히 설명되지 않을 수 있다. 그러나, 당업자는 이러한 예시적인 혁신들, 실시예들 및/또는 예들이 이러한 특정 세부사항들 없이 또는 그 등가물들과 함께 상업적으로 사용될 수 있음을 인식할 것이다. 다른 경우들에서, 잘 알려진 프로세스들 및 디바이스들은 이러한 예시적인 혁신들, 실시예들 및/또는 예들의 양상들을 불필요하게 모호하게 하지 않도록 상세하게 설명되지 않는다. 다른 경우들에서, 당업계에 알려진 일부 프로세싱 단계들 또는 동작들은 전혀 설명되지 않을 수 있다. 대신에, 다음의 설명은 다양한 예시적인 혁신들, 실시예들 및/또는 예들의 독특한 특징들 또는 요소들에 초점을 맞춘다. 또한, 이러한 설명은 단수형 구조의 일부 컴포넌트들을 지칭할 수 있지만, 하나 초과의 컴포넌트가 도면들 전반에서 도시될 수 있고 동일한 컴포넌트들은 동일한 번호들로 라벨링된다.
설계가 FPGA, 하드웨어 에뮬레이션 또는 다른 프로토타이핑(prototyping) 시스템들에서 구성 및 실행될 때, 각각의 에뮬레이션 사이클은 2개의 시간 기간들, 즉, 클록 생성 활동 시간 및 조합 회로 평가 시간으로 분할될 수 있다. 공지된 에뮬레이션 기술들에서, 결과적 최소 에뮬레이션 사이클 시간은 클록 생성 활동 시간과 조합 회로 평가 시간의 합산이다. 클록 생성 활동 시간 동안, 래치 또는 플롭의 클록 핀에 커플링될 때 클록으로서 사용되는 입력 변수들의 값들이 생성되고 래치 또는 플롭의 클록 핀에 전파된다. 조합 회로 평가 시간은 순차적 요소들, 예를 들어, 래치들 및 플롭들, 및 통상적으로 조합 경로들 또는 데이터 경로들로 지칭되는 순차적 요소들에 대한 데이터 입력들의 평가에 기여하는 조합 회로들의 평가를 위해 사용되는 시간에 대응한다. 래치 또는 플롭의 클록 핀, 예를 들어 클록 단자에 접속된 설계 네트(net) 또는 변수는 본 명세서에서 유도된 클록으로 지칭된다. 설계의 1차 클록은 이러한 정의에 따라 유도된 클록으로 간주될 수 있다.
조합 회로가 래치를 포함할 때, 래치는, 래치의 인에이블 입력 핀에 커플링되는 클록 신호와 같은 신호에 따른 타이밍 사이클의 임의의 시간에, 평가 또는 인에이블될 때 투명하고, 평가되지 않거나 디스에이블될 때 불투명하게 제조된다. 조합 회로가 플립-플롭을 포함할 때, 플립-플롭은, 클록 신호의 값이 신호 값을 변경할 때 또는 예를 들어 로우 로직 레벨에서 하이 로직 레벨로 전이할 때, 플립-플롭의 클록 입력 핀에 커플링된 클록 신호와 같은 신호에 따라, 평가 또는 인에이블될 때 투명하고, 평가되지 않거나 디스에이블될 때 불투명하게 제조된다.
유도된 클록들의 값들은 적절한 회로 동작을 위해 플롭들 및/또는 래치들을 평가하는 시간에 공지될 필요가 있다. 클록 트리(clock tree)는 플롭 및/또는 래치의 입력에서 유도된 클록 신호를 생성하기 위해 사용되는 임의의(선택적) 조합 로직에 입력되는 1차 설계 입력 변수들을 포함한다. 따라서, 클록 트리는 클록 트리 순차적 회로 또는 요소, 예를 들어, 클록 트리 플립-플롭 또는 설계 순차적 회로의 입력을 구동하여, 클록 트리 순차적 회로 또는 설계 순차적 회로가 유도된 클록 신호에 따라 평가되게 할 수 있다. 클록 트리 순차적 회로는 다른 순차적 회로를 평가하기 위해 커플링되는 출력으로서 클록 신호를 생성한다. 본 설명 전반에 걸쳐 사용되는 바와 같이, 커플링은 직접 또는 간접적으로 접속된 것을 의미하는 반면, 접속은 직접적으로 접속된 것을 의미한다. 반대로, 순차적 회로는 다른 순차적 회로들의 데이터 입력 신호들, 즉 데이터 경로 신호들에만 커플링되고 임의의 다른 순차적 회로들을 평가하기 위해 사용되지는 않는 출력 신호를 생성한다.
클록 트리가 FPGA 상로 맵핑될 때, 긴 지연 시간들 동안 처리되지 않는 경로들을 통해 또는 임의의(선택적) 조합 로직을 통해 1차 설계 입력 변수들을 전파하는 것은 에뮬레이션 동안 의도하지 않은 설계 회로 오작동을 초래할 수 있다. 그러나, 설계의 정확한 동작을 보장하기 위해, 에뮬레이션 또는 프로토타이핑 동안 의도하지 않은 동작을 방지하기 위해 회로를 평가할 때 클록들의 안정적 값들만이 활용되어야 한다. 이는, 클록 트리들이 유도된 클록 입력들에서 최종 값들로 안정되게 함으로써 달성될 수 있다.
에뮬레이션 사이클의 제1 부분 동안, 클록 트리 평가는 어떠한 조합 경로도 전파되지 않는 동안 발생한다. 에뮬레이션 사이클의 제2 위상에서, 조합 데이터 경로들은 어떠한 클록 트리 평가도 수행되지 않는 동안 전파된다. 클록 전파에 전용되는 FPGA-간 라우팅 자원들이 조합 경로 전파 동안 유휴이고 조합 데이터 경로들에 전용되는 자원들이 클록 전파 동안 유휴인 경우, 에뮬레이터가 더 느리게 실행될 수 있기 때문에 전체 라우팅 솔루션은 최적이 아니다.
본 발명의 일 양상에 따르면, 하드웨어 에뮬레이션 동안 래치들(대안적으로 이하 순차적 요소들로 지칭됨)뿐만 아니라 플립-플롭들 및 유도된 클록들(대안적으로 본 명세서에서 클록 콘으로 지칭됨)의 평가는 병렬적으로 그리고 파이프라인 방식으로 수행된다. 이를 달성하여 에뮬레이션의 속도를 가속화하기 위해, 유도된 클록들의 평가는 설계에서 플립-플롭들 및 래치들의 평가에 앞서 1 사이클 전에 수행된다.
따라서, 에뮬레이션 사이클 K 동안, 클록들의 값들은 기준 에뮬레이션의 사이클 K에서와 같이 컴퓨팅된다. 사이클 K+1의 시작 시에, 사이클 K에서 컴퓨팅된 바와 같은 클록들의 안정된 값들이 순차적 요소들을 평가하기 위해 사용된다. 그 결과, 에뮬레이션의 사이클 K+1 동안, 다음이 컴퓨팅된다: (i) 사이클 K+1에서 유도된 클록들의 값들, 및 (ii) 클록 값들의 사이클 K에 대응하는 순차적 요소들의 값들.
브레이크 포인트가 트리거되고 에뮬레이션이 중단되면 설계의 관찰가능성 및 제어가능성을 가능하게 하기 위해, 클록 콘은 자신의 직전 상태로 1 사이클 다시 회귀된다. 이는, 에뮬레이션의 사이클 K에 발생하는 브레이크 포인트가 사이클 K에 대한 순차적 요소들 및 유도된 클록들 둘 모두를 제공함을 보장한다. 설계의 코히어런트 뷰를 사용자에게 제공함으로써, 설계 상태들은 다른 에뮬레이터, 시뮬레이터 또는 다른 하드웨어의 출력과 직접 비교가능하다.
단순화를 위해, 설계가 2개의 클록들, 즉 6 유닛들의 기간을 갖는 Clk1, 및 10 유닛들의 기간을 갖는 Clk2를 갖는 것으로 가정한다. Clk1 및 Clk2 둘 모두는 50%의 듀티 사이클을 갖는 것으로 가정된다. 클록 신호들 Clk1 및 Clk2는 시간 유닛들 0, 3, 5, 6, 9, 10, 12, 15에서 발생하는 8개의 에뮬레이션 사이클들을 도출한다. 이러한 8개의 에뮬레이션 사이클들은 에뮬레이션 시간이 진행됨에 따라 대응하는 시간 유닛들에서 반복적으로 발생한다. 설계는 종종 2개 초과의 클록들을 포함하는 것으로 이해된다.
종래의 에뮬레이션 시스템들은, 각각의 에뮬레이션 사이클(이하 대안적으로 사이클로 지칭됨) K에 대해, 순차적 요소들 사이에서 데이터의 전파가 수행될 수 있기 전에 클록들 Clk1 및 Clk2가 전파되도록 요구한다. 따라서, 종래의 시스템에서, 에뮬레이션 사이클 길이는, 클록 콘이 전파되는데 소요되는 시간, 및 후속적으로 데이터가 순차적 요소들 사이에서 전파되는데 소요되는 시간의 합에 의해 정의된다. 즉, 종래의 에뮬레이션 시스템들에서, 클록 및 데이터의 전파는 직렬적으로 수행된다.
본 발명의 실시예들에 따르면, 클록 및 데이터의 전파는 병렬적으로 수행된다. 따라서, 각각의 에뮬레이션 사이클 K 동안 평가되는 클록 콘은 사이클 K+1에 대한 설계의 순차적 요소들 사이에서 데이터의 전파를 평가할 때 사용된다. 본 발명의 실시예들에 따르면, 클록 콘 및 순차적 요소들의 평가는 1 클록 사이클에 의해 분리되기 때문에, 평가들은 병렬적으로 발생하고, 따라서 에뮬레이션 사이클 길이들을 감소시킨다.
설계를 에뮬레이팅할 때, 설계자는 종종, 사용자가 설계 값들을 관찰 및 검사할 수 있게 하기 위해, 에뮬레이션을 중지(또한 본 명세서에서 중단으로 지칭됨)시키는 하나 이상의 트리거들(또한 본 명세서에서 브레이크들 또는 브레이크 포인트로 지칭됨)을 삽입한다. 트리거는, 예를 들어, 레지스터가 특정 값으로의 변화들을 출력할 때 발생할 수 있다. 따라서, 기준 시간의 사이클 K에서 발생하는 브레이크 포인트는 사이클 K 동안 플립-플롭들 및 래치들뿐만 아니라 유도된 클록들 둘 모두를 제시해야 한다. 사이클 K 동안 트리거된 브레이크 포인트는 사이클 K에서 순차적 요소들 그러나 사이클 K+1에서 유도된 클록들을 발견할 것이기 때문에, 본 발명의 실시예들은 정확한 결과들을 제공하기 위해 클록 콘을 1 사이클만큼 회귀한다. 따라서, 브레이크 포인트 동안 설계자에 의해 설계에 행해지고(예를 들어, 레지스터에 값을 기록함) 설계 전반에 걸쳐 전파되었을 수 있는 임의의 수정들이 또한 반전되고 처리되어, 중단된 사이클 동안 설계의 상태에 대한 정확한 설명이 사용자에게 제공된다.
도 1은 본 발명의 일 실시예에 따른, 하드웨어 에뮬레이션 제어 블록(100)의 단순화된 하이 레벨 블록도이다. 제어 블록(100)은 부분적으로, 에뮬레이션에서 사용되는 N개의 클록 신호들 중 상이한 클록 신호와 각각 연관된 N개의 지연 블록들(10i) - 여기서 i는 1 내지 N 범위의 정수임 -, N개의 플립-플롭들(12i), N개의 멀티플렉서들(Mux)(14i), 최소 지연 계산기(16), 클록 스케줄러(18), 클록 신호 생성기(20), 플립-플롭(22) 및 멀티플렉서(24)를 포함하는 것으로 도시된다.
각각의 지연 블록(101)은 자신의 연관된 클록의 기간을 정의하는 대응하는 신호 delayi를 통해 지연 값을 수신한다. 예를 들어, 지연 블록(101)과 연관된 clock1이 매 3개 시간 유닛들 이후 전이되면, 신호 delay1은 시스템 클록(도 1에 도시되지 않음)의 각각의 전이에 응답하여 3의 값을 수신한다. 유사하게, 지연 블록(10N)과 연관된 clockN이 매 5개 시간 유닛들 이후 전이되면, 신호 delayN은 시스템 클록의 각각의 전이에 응답하여 5의 값을 수신한다.
정상 동작에서, 신호 트리거가 어서트되지 않을 때, 멀티플렉서들(mux들)(14i)의 선택(S) 단자들은 이들이 연관된 지연 블록들로부터 수신한 데이터를 선택한다. 예를 들어, 신호 트리거가 어서트되지 않을 때, mux(141)는 지연 블록(101)의 출력 신호(A1)를 선택하고, mux(14N)는 지연 블록(10N)의 출력 신호(AN)를 선택한다. 즉, 정상 동작 동안, mux(14i)는 자신의 연관된 지연 블록(10i)에 의해 전달되는 출력 신호(Ai)를 선택한다.
최소 지연 계산기 블록(16)은 mux들(141, 142...14N)로부터 지연 값들을 수신하고, 수신된 지연 값들의 최소값을 결정하고 최소 지연 값을 클록 스케줄러(18)에 공급한다.
클록 스케줄러(18)는 최소 지연에 매칭하는 지연 값을 갖는 각각의 클록에 대한 전이를 스케줄링하고, 최소 지연 값에 매칭하지 않는 지연 값을 갖는 각각의 클록의 지연 값을 최소 지연만큼 감분시키도록 적응된다. 예를 들어, 에뮬레이팅되는 설계는 2개의 클록들, 즉, Clk1 및 Clk2를 갖는데, 즉, i는 2와 동일하다고 가정한다. 예를 들어, Clk1 및 Clk2는 각각 3개 및 5개 시간 유닛들의 지연 값들을 갖는다고 추가로 가정한다. 따라서, 신호 Clk1은 매 3개의 시간 유닛들마다 로우-대-하이 또는 하이-대-로우 전이를 갖고, 신호 Clk2는 매 5개의 시간 유닛들마다 로우-대-하이 또는 하이-대-로우 전이를 갖는다.
제1 에뮬레이션 사이클 동안, 신호들 Clk1 및 Clk2는 각각 3개 및 5개 시간 유닛들에서 전이(토글)한다. 제2 에뮬레이션 사이클 동안, 최소 지연 블록 계산기(16)는 3의 지연이 지연 5보다 작다고 결정한다. 따라서, 제2 에뮬레이션 사이클 동안, 클록 스케줄러(18)는 3개의 시간 유닛들에서 신호 Clk1에 대한 전이 및 (5-3=2)개의 시간 유닛들에서 신호 Clk2에 대한 전이를 스케줄링한다. 제3 에뮬레이션 사이클 동안, 최소 지연 블록 계산기(16)는 2의 지연이 3의 지연보다 작다고 결정한다. 따라서, 제3 에뮬레이션 사이클 동안, 클록 스케줄러(18)는 (3-2=1)개의 시간 유닛들에서 신호 Clk1에 대한 전이 및 5개의 시간 유닛들에서 신호 Clk2에 대한 전이를 스케줄링한다. 제4 에뮬레이션 사이클 동안, 최소 지연 블록 계산기(16)는 1의 지연이 5의 지연보다 작다고 결정한다. 따라서, 제4 에뮬레이션 사이클 동안, 클록 스케줄러(18)는 3개의 시간 유닛들에서 신호 Clk1에 대한 전이 및 (5-1=4)개의 시간 유닛들에서 신호 Clk2에 대한 전이를 스케줄링한다. 클록이 전이한다고 결정하는 프로세스는 전술된 프로토콜에 따라 계속된다. 8개의 에뮬레이션 사이클들에 대한 Clk1 및 Clk2의 전이들은 아래의 표 I에서 요약되며, 표기 #는 지연 값을 표현한다:
Figure pct00001
도 2는 상기 표 1과 연관된 대응하는 글로벌 최소 지연 및 클록 신호들 Clk1 및 Clk2의 타이밍도이다. 또한 글로벌 시간이 도 1에 도시된다. 클록 신호 생성기(20)는 클록 스케줄러(18)에 의해 결정되고 전술된 바와 같은 클록들에 대한 전이들을 야기하도록 구성된다.
클록 콘을 그 이전 상태로 결정적으로 회귀시키기 위해, 샘플링된 값들은 클록 생성을 제어하는 내부 신호들에 대해 유지되어야 한다. 전술된 바와 같이 동적으로 스케줄링된 지연들에 기초하여 클록 생성 방식에서, 샘플링된 값들은 동적 스케줄링에 기여하는 각각의 지연 블록, 클록 스케줄러 상태들, 및 클록 신호에 대해 유지된다.
브레이크 포인트가 트리거될 때, 각각의 지연 블록 내에서 사이클 K를 표현하는 샘플들은 최소 지연 계산기 블록(16)에 대한 입력들로서 적용되고 조합 로직을 통해 클록 스케줄러(18)에 전파되도록 허용되며, 그 내부 상태들은 이들의 샘플링된 값들로 회귀된다. 유사하게, 클록들의 사이클 K를 표현하는 샘플들이 설계에 적용되고 전파되도록 허용된다. 따라서, 신호 트리거가 예를 들어, 사이클 K에서 클록 정지 트리거 유닛(30)에 의해 어서트될 때, mux들(141)의 선택 신호들(S)은 플립-플롭들(121)로부터 수신된 자신들 각각의 입력들을 선택하고, mux(24)의 선택 신호(S)는 자신이 플립-플롭(22)으로부터 수신한 입력을 선택한다. 따라서, 사이클 K에서 브레이크 포인트가 트리거될 때, mux들(14i)은 지연 블록들(101i)에 의해 공급된 지연 값들의 사이클 K-1을 선택한다. 유사한 방식으로, 사이클 K에서 브레이크 포인트가 트리거될 때, mux(24)는 클록 신호 생성기(20)에 의해 공급된 클록 전이들의 사이클 K-1을 선택한다.
브레이크 포인트가 클리어되고 설계의 평가가 재개하면, 데이터 플립-플롭들이 사이클 K에서 유지되는 동안 클록 콘은 다시 사이클 K+1을 평가하도록 허용된다. 따라서 클록 콘의 스태거링된 오버레이 및 데이터 플롭 평가가 복원되고, 설계는 브레이크 포인트에 도달하기 이전처럼 오버레이된 실행을 계속한다. 사용자가 브레이크 포인트를 클리어한 후, 데이터 플롭들이 사이클 K에서 유지되는 동안 클록 콘이 사이클 K+1로 진행하도록 허용함으로써 에뮬레이션이 재개된다.
도 3은 각각의 지연 블록(10i)의 단순화된 하이 레벨 블록도이다. 지연 블록(10)은 부분적으로, 플립-플롭들(202 및 208), 감산기(204), XOR 게이트(206) 및 mux(210)를 포함하는 것으로 도시된다. 입력 신호 지연은 지연 블록에 할당된 지연 값에 대응한다. 예를 들어, 지연 블록(10)에 할당된 지연 값이 5개의 시간 유닛들이면, 입력 신호 지연은 5의 값을 수신한다. 입력 신호 global_minimum_delay은 도 1의 최소 지연 계산기(16)에 의해 계산되고 클록 생성기(18)에 의해 지연 블록들에 피드백되는 최소 지연이다. 지연 블록(10)에 의해 생성된 출력 신호 Delay_Increment는 도시된 바와 같이 XOR 게이트(206) 및 플립-플롭(202)에 적용된다.
출력 신호 Delay_Increment가 global_minimum_delay 입력 신호와 동일하면, XOR 게이트(208)는 로직 로우 값을 생성하여, 플립-플롭(208)으로 하여금 신호 CK의 다음 전이 동안, 지연 블록에 할당된 지연 값을 수신하는 mux(210)의 입력 I0을 선택하게 한다. 출력 신호 Delay_Increment가 global_minimum_delay 입력 신호와 동일하지 않으면, XOR 게이트(208)는 로직 하이 값을 생성하여, 플립-플롭(208)으로 하여금 신호 CK의 다음 전이 동안, global_minimum_delay 신호를 수신하는 mux(210)의 입력 I1을 선택하게 한다. 감산기(204)는 지연 블록 Delay_increment의 출력으로부터 global_minimum_delay를 감산하고 그 차이를 mux(210)의 입력 I1에 공급하도록 적응된다.
도 4는 본 발명의 일 실시예에 따른, 데이터 및 클록 신호들이 병렬적으로 그리고 파이프라이닝된 방식으로 평가될 수 있게 하는 로직 회로(500)의 단순화된 예시적인 블록도이다. 하드웨어 에뮬레이션 제어 블록(100)은 도 1 및 도 2에 도시되고 앞서 상세히 설명된 바와 같이, 클록 신호들 Clk1, Clk2…Clkn을 생성한다. 도 4는, 예를 들어, 사이클 K + 1에서 평가된 클록 Clk1이 파이프라이닝을 달성하기 위한 데이터 전파의 사이클 K 평가에서 사용되는 것을 보장하기 위해 사용되는 추가적인 회로부를 도시한다. 클록 Clk1에 대한 회로부만이 도시되지만, 다른 클록들은 단순화를 위해 도시되지 않은 유사한 추가적인 회로들을 갖는 것이 이해된다.
파이프라이닝 로직(500)은 에지 검출기(300) 및 데이터경로 제어 로직(400)을 포함하는 것으로 도시된다. 부분적으로, 하나의 반전된 입력을 갖는 AND 게이트(304) 및 플립-플롭(302)을 포함하는 것으로 도시되는 에지 검출기(300)는 클록 신호 Clk1의 전이들을 검출하고 응답으로 신호 Clk1_edge를 생성한다. 신호 Clk1_edge는 플립-플롭(304, 308)의 인에이블 EN 단자들에 적용된다. 플립-플롭들(304)의 출력(Q)과 플립-플롭(308)의 데이터 입력(D) 사이에, 다수의 조합 게이트들(단순화를 위해 도시되지 않음)을 종종 포함하는 데이터경로 조합 로직 콘(306)이 배치된다. 플립-플롭들(302, 304 및 308)은 이들의 클록 단자들에서 시스템 클록을 수신한다. 데이터경로 조합 로직 콘(306)으로부터 수신된 데이터 및 신호 EN은 안정적이고 시스템 클록의 도달 전에 유효하다. 플립-플롭(308)의 출력 Q는 에뮬레이팅되는 설계에 전달된다.
상세한 설명 - 일반적 컴퓨터 설명을 지원하는 기술
도 6a, 도 6b 및 도 6c는 본 기술의 회로 설계 및 회로 실시예들뿐만 아니라 본 기술의 실시예들과 함께 사용하기에 적합한 컴퓨터 시스템의 단순화된 블록도들이다.
도 6a에서 컴퓨터 시스템(3110)은 통상적으로, 버스 서브시스템(3112)을 통해 다수의 주변 디바이스들과 통신하는 적어도 하나의 컴퓨터 또는 프로세서(3114)를 포함한다. 통상적으로, 프로세서는 마이크로프로세서, 그래픽 프로세싱 유닛, 디지털 신호 프로세서 및 이들의 전자 프로세싱 등가물들, 예를 들어, 주문형 집적 회로(ASIC) 또는 필드 프로그래밍가능 게이트 어레이(FPGA)일 수 있거나 또는 컴퓨터가 이들을 포함할 수 있다. 용어들 '프로세서' 및 '컴퓨터'는 아래에서 추가로 정의된다. 이러한 주변 디바이스들은 메모리 서브시스템(3126) 및 파일 저장 서브시스템(3128)을 포함하는 저장 서브시스템(3124), 사용자 인터페이스 입력 디바이스들(3122), 사용자 인터페이스 출력 디바이스들(3120) 및 네트워크 인터페이스 서브시스템(3116)을 포함할 수 있다. 입력 및 출력 디바이스들은 컴퓨터 시스템(3110)과의 사용자 상호작용을 허용한다.
컴퓨터 시스템은 서버 컴퓨터, 클라이언트 컴퓨터, 워크스테이션, 메인프레임, 개인용 컴퓨터(PC), 태블릿 PC, 셋톱 박스(STB), 개인 휴대 정보 단말(PDA), 셀룰러 전화, 스마트폰, 웹 기기, 랙-장착된 "블레이드", 키오스크, 텔레비전, 게임 스테이션, 네트워크 라우터, 스위치 또는 브릿지, 또는 머신에 의해 수행될 동작을 특정하는 명령들(124)을 (순차적으로 또는 다른 방식으로) 실행할 수 있는 임의의 데이터 프로세싱 머신일 수 있다.
컴퓨터 시스템은 통상적으로, Microsoft's Windows, Sun Microsystems's Solaris, Apple Computer's MacOs, Linux 또는 Unix와 같은 운영 체제를 포함한다. 컴퓨터 시스템은 또한 통상적으로 BIOS(Basic Input/Output System) 및 프로세서 펌웨어를 포함할 수 있다. 운영 체제, BIOS 및 펌웨어는 프로세서에 접속된 인터페이스들 및 서브시스템들을 제어하기 위해 프로세서에 의해 사용된다. 이러한 운영 체제들과 호환가능한 통상적인 프로세서들은 Intel의 Pentium 및 Itanium, Advanced Micro Devices의 Opteron 및 Athlon, 및 ARM Holdings의 ARM 프로세서를 포함한다.
청구된 발명들의 혁신들, 실시예들 및/또는 예들은 종래의 컴퓨터 애플리케이션들 또는 이들을 실행하는 프로그래밍가능 장치 어느 것으로도 제한되지 않는다. 예를 들어, 청구되는 혁신들, 실시예들 및/또는 예들은 광학 컴퓨터, 양자 컴퓨터, 아날로그 컴퓨터 등을 포함할 수 있다. 컴퓨터 시스템은 멀티-프로세서 또는 멀티-코어 시스템일 수 있고, 분산형 또는 원격 시스템을 사용하거나 그 안에 구현될 수 있다. 본 명세서에서 용어 '프로세서'는 최광의 관점에서, 그래픽 프로세싱 유닛들, 디지털 신호 프로세서들, 디지털 프로세서들 및 이러한 디바이스들의 조합들을 포함하는 멀티-코어 또는 멀티-프로세서 어레이들 및 단일 프로세서를 포함하도록 사용된다. 추가로, 오직 단일 컴퓨터 시스템 또는 단일 머신이 예시될 수 있지만, 이러한 용어들의 단수형 형태의 사용은 또한, 본 명세서에 논의된 명령들의 세트들 중 임의의 하나 이상을 수행하기 위해 명령들(124)을 개별적으로 또는 공동으로 실행하는 컴퓨터 시스템들 또는 머신들의 임의의 집합을 의미할 것이다. 컴퓨터들 및 네트워크들의 끊임없이 변하는 성질로 인해, 도 6a에 도시된 컴퓨터 시스템(3110)의 설명은 선호되는 실시예들을 예시할 목적으로 단지 일례로서 의도된다. 도 6a에 도시된 컴퓨터 시스템보다 많거나 적은 컴포넌트들을 갖는 컴퓨터 시스템(3110)의 많은 다른 구성들이 가능하다.
네트워크 인터페이스 서브시스템(3116)은 통신 네트워크(3118)에 대한 인터페이스를 포함하는 외부 네트워크들에 대한 인터페이스를 제공하고, 통신 네트워크(3118)를 통해 다른 컴퓨터 시스템들 또는 머신들에서 대응하는 인터페이스 디바이스들에 커플링된다. 통신 네트워크(3118)는 많은 상호접속된 컴퓨터 시스템들, 머신들 및 통신 링크들을 포함할 수 있다. 이러한 통신 링크들은 유선 링크들, 광학 링크들, 무선 링크들, 또는 정보의 통신을 위한 임의의 다른 디바이스들일 수 있다. 통신 네트워크(3118)는 임의의 적합한 컴퓨터 네트워크, 예를 들어, 인터넷과 같은 광역 네트워크 및/또는 이더넷과 같은 로컬 영역 네트워크일 수 있다. 통신 네트워크는 유선 및/또는 무선일 수 있고, 통신 네트워크는 가상 사설 네트워크와 함께 이용가능한 것과 같은 암호화 및 암호해독 방법들을 사용할 수 있다. 통신 네트워크는 하나 이상의 통신 인터페이스들을 사용하고, 이는 다른 시스템들로부터 데이터를 수신하고 그에 데이터를 송신할 수 있다. 통신 인터페이스들의 실시예들은 통상적으로 이더넷 카드, 모뎀(예를 들어, 전화, 위성, 케이블 또는 ISDN), (비동기식) DSL(digital subscriber line) 유닛, 파이어와이어 인터페이스, USB 인터페이스 등을 포함한다. HTTP, TCP/IP, RTP/RTSP, IPX 및/또는 UDP와 같은 하나 이상의 통신 프로토콜들이 사용될 수 있다.
사용자 인터페이스 입력 디바이스들(3122)은 영숫자 키보드, 키패드, 포인팅 디바이스들, 예를 들어, 마우스, 트랙볼, 터치패드, 스타일러스 또는 그래픽 태블릿, 스캐너, 디스플레이에 통합된 터치스크린, 오디오 입력 디바이스들, 예를 들어, 음성 인식 시스템들 또는 마이크로폰들, 시선 인식, 뇌파 패턴 인식 및 다른 유형들의 입력 디바이스들을 포함할 수 있다. 이러한 디바이스들은 유선 또는 무선으로 컴퓨터 시스템에 접속될 수 있다. 일반적으로, 용어 "입력 디바이스"의 사용은 컴퓨터 시스템(3110)에 또는 통신 네트워크(3118) 상에 정보를 입력하기 위한 모든 가능한 유형들의 디바이스들 및 방식들을 포함하도록 의도된다. 사용자 인터페이스 입력 디바이스는 사용자가 일부 유형들의 사용자 인터페이스 출력 디바이스들, 예를 들어, 디스플레이 서브시스템 상에 나타나는 물체들, 아이콘들 등을 선택하도록 허용한다.
사용자 인터페이스 출력 디바이스들(3120)은 디스플레이 서브시스템, 프린터, 팩스 머신, 또는 비-시각적 디스플레이, 예를 들어, 오디오 출력 디바이스들을 포함할 수 있다. 디스플레이 서브시스템은 음극선관(CRT), 평판 디바이스, 예를 들어, 액정 디스플레이(LCD), 투영 디바이스, 또는 가상 현실 시스템과 같은 가시적 이미지를 생성하기 위한 일부 다른 디바이스를 포함할 수 있다. 디스플레이 서브시스템은 또한 예를 들어, 오디오 출력 또는 촉각적 출력(예를 들어, 진동들) 디바이스들을 통해 비-시각적 디스플레이를 제공할 수 있다. 일반적으로, 용어 "출력 디바이스"의 사용은 컴퓨터 시스템(3110)으로부터 사용자에게 또는 다른 머신 또는 컴퓨터 시스템에 정보를 출력하기 위한 모든 가능한 유형들의 디바이스들 및 방식들을 포함하도록 의도된다.
메모리 서브시스템(3126)은 통상적으로, 프로그램 실행 동안 명령들 및 데이터의 저장을 위한 메인 랜덤 액세스 메모리(RAM)(3130)(또는 다른 휘발성 저장 디바이스) 및 고정된 명령들이 저장된 판독 전용 메모리(ROM)(3132)를 포함하는 복수의 메모리들을 포함한다. 파일 저장 서브시스템(3128)은 프로그램 및 데이터 파일들에 대한 영구적 저장을 제공하고, 하드 디스크 드라이브, 연관된 제거가능한 매체들과 함께 플로피 디스크 드라이브, CD-ROM 드라이브, 광학 드라이브, 플래시 메모리 또는 제거가능한 매체 카트리지들을 포함할 수 있다. 특정 실시예들의 기능을 구현하는 모듈들 및 데이터베이스들은 파일 저장 서브시스템(3128)에 의해 저장될 수 있다.
버스 서브시스템(3112)은 컴퓨터 시스템(3110)의 다양한 컴포넌트들 및 서브시스템들이 의도된 대로 서로 통신하게 하기 위한 디바이스를 제공한다. 버스 서브시스템(3112)이 단일 버스로서 개략적으로 도시되지만, 버스 서브시스템들의 실시예들은 다수의 버스들을 사용할 수 있다. 예를 들어, RAM-기반 메인 메모리는 다이렉트 메모리 액세스(DMA) 시스템들을 사용하여 파일 저장 시스템들과 직접 통신할 수 있다.
도 6b는 파일 저장 서브시스템(3128) 및/또는 네트워크 인터페이스 서브시스템(3116)과 연관된 비일시적 컴퓨터 판독가능 데이터 및 정보 저장 매체와 같은 메모리(3140)를 도시하고, 회로 설계를 특정하는 데이터 구조를 포함할 수 있다. 메모리(3140)는 하드 디스크, 플로피 디스크, CD-ROM, 광학 매체, 제거가능한 매체 카트리지, 또는 휘발성 또는 비휘발성 형태로 컴퓨터 판독가능 데이터를 저장하는 다른 매체일 수 있다. 이러한 메모리로부터 컴퓨터에 판독되는 소프트웨어는 유형적 형태로부터 선택된 시간 인스턴스에서 매체(예를 들어, 적외선 광보다 긴 전자기 스펙트럼에서의 파장들을 갖는 전자기 방사로서 대기 또는 공간과 같은 매체 또는 전기 펄스로서 네트워크, 커넥터, 와이어, 또는 트레이스)를 통해 전파되는 송신 신호로 변환될 수 있다.
도 6c는 예를 들어, 셀 라이브러리로부터 선택된 하나 이상의 셀들을 포함하는 설명된 기술로 생성된 집적 회로(3190)를 의미한다.
상세한 설명 - 하드웨어/소프트웨어 등가물을 지원하는 기술
본 명세서에 설명된 혁신들, 실시예들 및/또는 예들 중 일부는 프로세서를 포함하고 그리고/또는 사용한다. 본 명세서에서 사용되는 바와 같이, 용어 '프로세서'는 통상적으로 시퀀스 변환들(또한 '동작들'로 지칭됨)을 사용하여 데이터 및 정보를 물리적으로 변환하는 유형적 데이터 및 정보 프로세싱 디바이스를 의미한다. 데이터 및 정보는 물리적으로, 프로세서에 의해 저장, 액세스, 전송, 조합, 비교 또는 달리 조작될 수 있는 전기, 자기, 광학 또는 음향 신호에 의해 표현될 수 있다. 용어 '프로세서'는 그래픽 프로세싱 유닛들, 디지털 신호 프로세서들, 디지털 프로세서들 또는 이러한 요소들의 조합들을 포함하는 멀티-코어 시스템들 또는 멀티-프로세서 어레이들 및 단일 프로세서를 의미할 수 있다.
프로세서는 예를 들어, 디지털 로직 회로(예를 들어, 이진 로직) 또는 아날로그(예를 들어, 연산 증폭기)를 포함하는 전자장치일 수 있다. 프로세서는 또한, 예를 들어, 광학 신호 프로세싱, DNA 변환들 또는 양자 역학 또는 광전자 프로세서와 같은 기술들의 조합에 기초한 프로세서들에서 보이는 바와 같이 비-전자장치일 수 있다. 이진 형태에 구조화된 데이터 및 정보의 경우, AND, OR 및 NOT 로직 연산들(및 NAND, NOR 및 XOR 동작들과 같은 이들의 파생들)을 사용하여 데이터 및 정보를 변환할 수 있는 임의의 프로세서는 부울(Boolean) 로직의 임의의 함수를 사용하여 데이터 및 정보를 변환할 수 있다. 프로세서, 예를 들어, 아날로그 신경 네트워크 프로세서는 또한 데이터 및 정보를 비-디지털 방식으로 변환할 수 있다. 이러한 프로세서들 중 임의의 것이 인간 두뇌의 생체 전기 구조와 동일한 임의의 방식 또는 형태로 데이터 및 정보를 프로세싱, 저장 및 검색한다는 어떠한 과학적 증거도 없다.
하나 이상의 프로세서들은 또한 '클라우드 컴퓨팅' 환경에서 또는 '서비스로서의 소프트웨어(SaaS)'로서 관련 동작들의 수행을 지원하도록 동작할 수 있다. 예를 들어, 동작들 중 적어도 일부는 분산형 또는 원격 시스템에서 이용가능한 프로세서들의 그룹에 의해 수행될 수 있고, 이러한 프로세서들은 통신 네트워크(예를 들어, 인터넷)를 통해 그리고 하나 이상의 소프트웨어 인터페이스들(예를 들어, 애플리케이션 프로그램 인터페이스(API))을 통해 액세스가능하다.
본 명세서에서 사용되는 바와 같이, 용어 '모듈'은, 통상적으로 크기 및/또는 복잡도에서 제한되는 유형적 데이터 및 정보 프로세싱 디바이스를 의미한다. 예를 들어, 용어 '모듈'은 데이터 및 정보를 변환할 수 있는 하나 이상의 방법들 또는 절차들을 의미할 수 있다. 용어 '모듈'은 또한 컴퓨터 프로그램에서 하나 이상의 방법들 및 절차들의 조합을 의미할 수 있다. 용어 '모듈'은 또한 디지털 로직 디바이스들의 소형 네트워크를 의미할 수 있고, 여기서 로직 디바이스들의 상호접속들은 네트워크에 구조를 제공한다. 시스템 C와 같은 특수한 언어에서 특정되는 모듈을 포함하는 방법들 및 절차들은, 방법들 및 절차들로부터 획득된 것과 정확히 동일한 결과들과 함께 데이터 및 정보를 프로세싱하는 디지털 로직 디바이스들의 네트워크에 대한 특정성을 생성하기 위해 사용될 수 있다.
모듈은 영구적으로 구성되거나(예를 들어, 하드웨어를 형성하도록 하드와이어링됨), 일시적으로 구성되거나(예를 들어, 소프트웨어로 프로그래밍됨) 또는 2개의 구성들의 조합(예를 들어, 구조화된 ASIC)일 수 있다. 영구적으로 구성된 모듈들은 예를 들어, 산술 로직 유닛들(Arithmetic Logic Units; ALUs), 프로그래밍가능 로직 어레이들(Programmable Logic Arrays; PLAs) 또는 판독 전용 메모리들(Read Only Memories; ROMs)과 같은 주문형 집적 회로들(ASICs)을 사용하여 제조될 수 이고, 이들 모두는 통상적으로 제조 동안 구성된다. 일시적으로 구성된 모듈들은 예를 들어, 필드 프로그래밍가능 게이트 어레이들(FPGAs, 예를 들어, Xilink 또는 Intel's Altera에 의해 판매됨), 랜덤 액세스 메모리들(RAMs) 또는 마이크로프로세서들을 사용하여 제조될 수 있다. 모듈은 본 발명의 본 혁신들, 실시예들 및/또는 예들의 양상들을 수행하기 위해, 통상적으로 데이터 및 정보에 적용되는 시퀀스 변환들(또한 '동작들'로 지칭됨)을 사용하여(또는 ROM들 및 RAM들의 경우, 출력 데이터 및 정보를 저장하는 메모리에 대한 어드레스로서 입력 정보를 사용함으로써 데이터 및 정보를 변환하여) 데이터 및 정보를 프로세싱하도록 구성된다.
일시적으로 구성되는 모듈들은 임의의 하나의 시간 인스턴스에서 구성될 필요가 없다. 예를 들어, 하나 이상의 모듈들을 포함하는 프로세서는 상이한 시간들에 구성된 모듈들을 가질 수 있다. 프로세서는 하나의 시간 인스턴스에서 하나 이상의 모듈들의 세트를 포함할 수 있고, 상이한 시간 인스턴스에서 하나 이상의 모듈들의 상이한 세트를 포함할 수 있다. 영구적으로 구성된 형태, 일시적으로 구성된 형태 또는 2개의 형태들의 조합으로 모듈을 제조하거나 구현하는 결정은 비용, 시간 고려사항들, 엔지니어링 제약들 및/또는 특정 설계 목표들에 의해 이루어질 수 있다. 모듈의 프로세싱의 "실체"는 모듈이 제조 또는 구현되는 형태와는 독립적이다.
본 명세서에서 사용되는 바와 같이, '알고리즘'은 결과를 달성하도록 데이터 및 정보를 변환하기 위해 모듈이 사용할 수 있는 동작들 또는 명령들의 시퀀스 또는 세트를 포함하는 프로세스를 의미한다. 모듈은 하나 이상의 알고리즘들을 포함할 수 있다. 본 명세서에서 사용되는 바와 같이, 용어 '스레드'는 전체 프로세스 또는 알고리즘의 명령들의 서브세트를 포함할 수 있는 명령들의 시퀀스를 지칭한다. 프로세스 또는 알고리즘은 병렬로 실행될 수 있는 다수의 스레드들로 파티셔닝될 수 있다.
본 명세서에서 사용되는 바와 같이, 용어 '컴퓨터'는 예를 들어, 메모리(예를 들어, NOT-AND 또는 NOT-OR 연산을 사용한 플립-플롭들에 기초한 메모리)의 추가로, 트랜지스터들을 포함할 수 있는 전자 게이트들을 사용하여, AND, OR 및 NOT 로직 연산들과 같은(그러나, 이에 제한되지 않음) 특정 연산들을 수행할 수 있는 적어도 하나의 정보 프로세서를 포함한다. 이러한 프로세서는 Turing-컴플리트 또는 계산 보편적으로 지칭된다. 컴퓨터는 디지털 컴퓨터이든 아니든, 통상적으로 많은 모듈들을 포함한다.
본 명세서에서 사용되는 바와 같이, 용어 '소프트웨어' 또는 '프로그램'은 본 명세서에서 설명된 혁신들, 실시예들 및 예들에서 사용하기 위한 프로세서를 구성하는 하나 이상의 알고리즘들 및 데이터 구조들을 의미한다. 소프트웨어에 의해 구성가능한 이러한 디바이스들은 하나 이상의 컴퓨터들, 예를 들어, 독립형 클라이언트 또는 서버 컴퓨터들, 또는 하나 이상의 하드웨어 모듈들 또는 하나 이상의 이러한 컴퓨터들 또는 모듈들의 시스템들을 포함한다. 본 명세서에서 사용되는 바와 같이, 용어 "소프트웨어 애플리케이션"은 특정 결과를 달성하도록, 예를 들어 워드 프로세싱 동작들을 수행하거나 데이터의 세트를 암호화하도록 프로세서를 구성하는 일련의 데이터 및 명령들을 의미한다.
본 명세서에 사용되는 바와 같이, 용어 '프로그래밍 언어'는 소프트웨어를 포함하는 명령 및 데이터의 세트들을 특정하기 위한 문법 및 신택스를 의미한다. 프로그래밍 언어들은 어셈블러 명령들, ISA() 명령들, 기계 명령들, 기계 종속적 명령들, 마이크로코드, 펌웨어 명령들, 상태 설정 데이터, 또는 하나 이상의 상위 레벨 언어들, 예를 들어, 종래의 절차 프로그래밍 언어들, 예를 들어, "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어들(예를 들어, SystemC) 또는 객체 지향적 프로그래밍 언어들, 예를 들어, Smalltalk, C++ 등 및 임의의 장래의 등가 프로그래밍 언어들의 임의의 조합으로 기록된 소스 코드 또는 객체 코드를 포함한다.
소프트웨어는 데이터 및 정보 저장 디바이스로부터 컴퓨터 또는 컴퓨터 시스템의 하나 이상의 메모리들에 입력되고, 등가적으로, 판독된다. 컴퓨터는 통상적으로, 소프트웨어를 전달하기 위해 사용되는 저장 매체들을 판독하기 위한 디바이스를 갖거나, 네트워크를 통해 소프트웨어를 수신하는 인터페이스 디바이스를 갖는다. 이러한 프로세스는 일반적 컴퓨터 설명 섹션에서 논의된다.
상세한 설명 - EDA 시스템/워크플로우 설명을 지원하는 기술
도 7은, 집적 회로를 표현하는 설계 데이터 및 명령들을 변환 및 검증하기 위해, 컴퓨터를 이용한 소프트웨어 도구들 및 가능하게는 특수한 하드웨어-보조 도구들을 사용하여 집적 회로와 같은 제조 항목의 설계, 검증 및 제조에서 수행되는 다양한 프로세스들을 예시한다. 이러한 프로세스들은, 본 명세서에서 또한 EDA 소프트웨어, 설계 도구, 또는 검증 도구로서 나타날 수 있는 EDA 소프트웨어 도구(112)를 사용하는 제조 물품(본 명세서에서는 설계 또는 디바이스로 지칭됨)을 생성하기 위한 프로세스 동안 변환되는 정보인 설계자에 의해 공급된 정보로 제품 아이디어(110)를 생성하는 것으로 시작한다. 설계가 완성되면, 이는 테이프-아웃(taped-out)될 수 있고(134), 이는, 통상적으로 집적 회로에 대한 아트워크(예를 들어, 기하학적 패턴들)가 마스크 세트를 제조하기 위해 제조 시설로 전송될 때이고, 이는 이어서 집적 회로를 제조하기 위해 사용된다. 테이프-아웃된 후, 반도체 다이가 제조되고(136), 패키징 및 조립체 프로세스들(138)이 수행되고, 이는, 회로, 디바이스, 컴포넌트, 칩 또는 SoC(System on Chip)로서 본 명세서에서 또한 나타날 수 있는 마감된 집적 회로(140)를 도출한다.
예를 들어, 제조 물품들, 회로 또는 시스템은 저레벨 트랜지스터 레이아웃들로부터 고레벨 설명 언어들까지 범위의 다양한 추상화 레벨들에서 상업용으로 사용된다. 대부분의 설계자들은 VHDL, Verilog, SystemVerilog, SystemC, MyHDL 또는 OpenVera와 같은 HDL(hardware description language)을 사용하여 회로들 및 시스템들을 설계하기 위해 높은 레벨의 추상화에서 시작한다. 고레벨의 HDL은 특히 방대한 시스템의 경우 개발자들이 이해하기 더 쉽고, 더 낮은 레벨의 추상화를 사용하여 파악하기 어려운 매우 복잡한 개념들을 설명할 수 있다. HDL 설명은 개발자들에게 도움이 되는 다른 레벨들의 추상화로 변환될 수 있다. 예를 들어, 상위 레벨 설명은 로직 레벨 레지스터 전송 레벨(register transfer level; RTL) 설명, 게이트 레벨(GL) 설명, 레이아웃 레벨 설명 또는 마스크 레벨 설명으로 변환될 수 있다. 각각의 낮은 추상화 레벨은 설계 설명에 추가 세부사항을 도입한다. 더 낮은 레벨들의 추상화는 컴퓨터에 의해 자동으로 생성되거나, 설계 라이브러리에서 유도되거나, 다른 설계 자동화 기술에 의해 생성될 수 있다. 더 낮은 레벨의 추상화에서 규격 언어의 예는 SPICE이고, 이는 아날로그 기반 회로들에 대한 자세한 설명들로 많이 사용된다.
EDA 소프트웨어 도구(112)를 사용하는 설계 프로세스는 아래에서 설명되는 프로세스들(114 내지 132)을 포함한다. 이러한 설계 흐름 설명은 단지 예시를 위한 것이며 본 개시를 제한하려는 의도가 아니다. 예를 들어, 실제 집적 회로 설계는 설계자가 본 명세서에 설명된 시퀀스와는 상이한 시퀀스로 설계 동작들을 수행하도록 요구할 수 있다.
시스템 설계(114) 동안, 설계자는 제조될 기능을 설명한다. 설계자는 또한 기능을 개선하고 비용 등을 체크하는 것 등을 위해 가정(what-if) 계획을 수행할 수 있다. 하드웨어-소프트웨어 아키텍처 파티셔닝은 이러한 스테이지에서 발생할 수 있다. 이러한 스테이지에서 사용될 수 있는 캘리포니아, 마운틴 뷰의 Synopsys, Inc.의 예시적인 EDA 소프트웨어 제품들은 Model Architect, Saber, System Studio, 및 Designware 제품들을 포함한다.
로직 설계 및 기능 검증(116) 동안, 회로 내의 모듈들은 하나 이상의 하드웨어 설명 언어들 또는 HDL들에서 특정되고, HDL 내의 설계는 기능 정확도를 위해, 즉, 설계가 정확한 출력들을 생성하는 것을 보장하도록 설계되는 회로 또는 시스템의 규격 요건들에 매칭하기 위해 체크된다. 예시적인 HDL 언어들은 Verilog, VHDL 및 SystemC이다. 기능 검증은 통상적으로 소프트웨어 기반 시뮬레이터들 및 다른 도구들, 예를 들어, 테스트벤치 생성기들, 정적 HDL 체크 도구 및 공식 검증 도구들을 사용함으로써 수행된다. 일부 상황들에서, '에뮬레이터들' 또는 '프로토타이핑 시스템들'로 지칭되는 특수한 하드웨어가 기능 검증을 가속하기 위해 사용된다. 이러한 스테이지에서 사용될 수 있는 캘리포니아, 마운틴 뷰의 Synopsys, Inc.의 예시적인 EDA 소프트웨어 제품들은 VCS, Vera, Designware, Magellan, Formality, ESP 및 Leda 제품들을 포함한다. 이러한 상태에서 사용될 수 있는 Synopsys로부터 또한 이용가능한 예시적인 에뮬레이터 및 프로토타이핑 제품들은 Zebu.RTM. 및 Protolink.RTM을 포함한다. (RTM = "등록된 상표").
테스트를 위한 합성 및 설계(118) 동안, HDL 코드는 네트리스트로 변환된다. 이러한 네트리스트는 타겟 기술에 대해 최적화될 수 있다. 추가적으로, 테스트들은 마감된 집적 회로를 체크하기 위해 설계 및 구현될 수 있다. 이러한 스테이지에서 사용될 수 있는 캘리포니아, 마운틴 뷰의 Synopsys, Inc.의 예시적인 EDA 소프트웨어 제품들은, Design Compiler, Physical Compiler, Test Compiler, Power Compiler, FPGA Compiler, Tetramax, 및 Designware 제품들을 포함한다.
네트리스트 검증(120) 동안, 네트리스트는 타이밍 제약들에 대한 준수 및 HDL 코드에 대한 대응을 위해 체크된다. 이러한 스테이지에서 사용될 수 있는 캘리포니아, 마운틴 뷰의 Synopsys, Inc.의 예시적인 EDA 소프트웨어 제품들은, Formality, Primetime, 및 VCS 제품들을 포함한다.
설계 계획(122) 동안, 집적 회로에 대한 전체 평면도가 구성되고, 타이밍 및 최상위 라우팅을 위해 분석된다. 이러한 스테이지에서 사용될 수 있는 캘리포니아, 마운틴 뷰의 Synopsys, Inc.의 예시적인 EDA 소프트웨어 제품들은, Astro 및 IC Compiler 제품들을 포함한다.
레이아웃 구현(124) 동안, 특정 로직 기능들을 수행하기 위해 라이브러리 셀들이 선택할 수 있는 것과 같이, 물리적 배치(트랜지스터들 또는 커패시터들과 같은 회로 요소들의 포지셔닝) 및 라우팅(복수의 도체들에 의한 동일한 것의 접속)이 발생한다. 이러한 스테이지에서 사용될 수 있는 캘리포니아, 마운틴 뷰의 Synopsys, Inc.의 예시적인 EDA 소프트웨어 제품들은, Astro 및 IC Compiler 제품들을 포함한다.
분석 및 추출(126) 동안, 회로 기능은 레이아웃 레벨에서 검증되고, 이는 레이아웃 설계의 개선을 허용한다. 이러한 스테이지에서 사용될 수 있는 캘리포니아, 마운틴 뷰의 Synopsys, Inc.의 예시적인 EDA 소프트웨어 제품들은, Astrorail, Primerail, Primetime, 및 Star RC/XT 제품들을 포함한다.
물리적 검증(128) 동안, 레이아웃 설계는 DRC 제약들, 전기 제약들, 리소그래피 제약들 및 회로 기능이 HDL 설계 규격에 매칭하는 것과 같은 제조 제약들에 대한 정확성을 보장하기 위해 체크된다. 이러한 스테이지에서 사용될 수 있는 캘리포니아, 마운틴 뷰의 Synopsys, Inc.의 예시적인 EDA 소프트웨어 제품들은 Hercules 제품을 포함한다.
분해능 향상(130) 동안, 설계의 제조가능성을 개선하기 위해 레이아웃의 기하학적 조작들이 수행된다. 이러한 스테이지에서 사용될 수 있는 캘리포니아, 마운틴 뷰의 Synopsys, Inc.의 예시적인 EDA 소프트웨어 제품들은, Proteus 제품들을 포함한다.
테이프-아웃 동안, 리소그래피 마스크들의 제조를 위해 (적절한 경우 리소그래피 향상들이 적용된 후) 사용될 데이터가 생성된다. 테이프-아웃 동안 사용할 수 있는 Synopsys, Inc.의 예시적인 EDA 소프트웨어 제품들은 IC Compiler 및 Custom Designer 제품군들을 포함한다.
마스크-데이터 준비(132) 동안, 마감된 집적 회로들을 생성하기 위해 사용되는 리소그래피 마스크들을 생성하기 위해 '테이프-아웃' 데이터가 사용된다. 이러한 스테이지에서 사용될 수 있는 캘리포니아, 마운틴 뷰의 Synopsys, Inc.의 예시적인 EDA 소프트웨어 제품들은 CATS 제품군을 포함한다.
전술된 집적 회로 설계 도구들 모두에 대해, Cadence, Siemens, 다른 기업 엔티티들로부터의 유사한 도구들 또는 대학들 또는 오픈 소스 저장소들로부터의 다양한 비상업적 도구들이 대안으로서 사용될 수 있다.
본 개시의 실시예들은 전술된 스테이지들 중 하나 이상 동안 사용될 수 있다. 구체적으로, 본 개시의 일부 실시예들은 EDA 소프트웨어(112)에서 사용될 수 있다.
라이브러리를 사용한 물리적 및 논리적 설계를 위해 그리고 라이브러리에 대한 셀들의 개발을 위해 적용되는 도구들, 및 본 명세서에서 설명되는 EDA 도구들 중 일부 또는 모두의 기능을 제공하는 프로그램들 및 데이터 구조들을 저장하기 위해 바람직하게는 저장 서브시스템이 사용된다. 이러한 프로그램들 및 데이터 구조들은 일반적으로 당업자들에게 공지된 방식으로 하나 이상의 프로세서들에 의해 실행된다.
상세한 설명 - 에뮬레이션 환경 설명을 지원하는 기술
도 5에 도시된 요소(112)와 같은 EDA 소프트웨어 시스템은 통상적으로 회로 설계의 기능을 검증하기 위한 에뮬레이션 시스템(116)을 포함한다. 도 7은 호스트 컴퓨터 시스템(300)(종종 EDA 시스템의 일부) 및 에뮬레이터 시스템(202)(통상적으로 FPGA(Field Programmable Gate Array)들과 같은 프로그래밍가능 디바이스들의 세트)을 포함하는 통상적인 에뮬레이션 시스템을 도시한다. 호스트 시스템은 회로 설계를 에뮬레이팅하도록 에뮬레이터를 구성하기 위해 통상적으로 컴파일러(210)를 사용하여 데이터 및 정보를 생성한다. 에뮬레이팅될 하나 이상의 회로 설계들은 DUT(Design Under Test)로 지칭된다. 에뮬레이터는 예를 들어, DUT의 기능을 검증하기 위한 에뮬레이션 결과들을 사용하기 위해 DUT를 에뮬레이팅하는 하드웨어 시스템이다. 본 명세서에 개시된 실시예들에 대해 사용될 수 있는 에뮬레이션 시스템의 일례는 Synopsys, Inc.로부터 입수가능한 ZeBu Server이다.
호스트 시스템(300)은 하나 이상의 프로세서들을 포함한다. 호스트 시스템이 다수의 프로세서들을 포함하는 실시예에서, 호스트 시스템에 의해 수행되는 것으로 본 명세서에 설명된 기능들은 다수의 프로세서들 사이에 분산될 수 있다.
호스트 시스템(300)은 통상적으로 DUT를 표현하는 하드웨어 설명 언어로 기록된 코드를 프로세싱하여, DUT를 에뮬레이팅하도록 에뮬레이션 시스템(202)을 구성하기 위해 사용되는 정보 및 데이터(통상적으로 이진)를 생성하는 컴파일러(210)를 포함한다. 컴파일러(210)는 DUT를 변환, 변경, 재구성, 그에 새로운 기능들을 추가 및/또는 그 타이밍을 제어할 수 있다.
호스트 시스템 및 에뮬레이터는 에뮬레이션 접속부에 의해 운반되는 신호들을 사용하여 데이터 및 정보를 교환한다. 접속부는 하나 이상의 전기 케이블들, 예를 들어, RS232 또는 USB 프로토콜들과 호환가능한 핀 구성들을 갖는 케이블일 수 있다. 접속부는 유선 통신 매체 또는 네트워크, 예를 들어, 로컬 영역 네트워크 또는 광역 네트워크, 예를 들어, 인터넷일 수 있다. 접속부는 Bluetooth.RTM. 또는 IEEE 802.11과 같은 무선 프로토콜을 사용하여 하나 이상의 액세스 포인트들을 이용하는 무선 통신 매체 또는 네트워크일 수 있다. 호스트 시스템 및 에뮬레이터는 네트워크 서버와 같은 제3 디바이스를 통해 데이터 및 정보를 교환할 수 있다.
에뮬레이터는 다수의 FPGA들(또는 다른 프로그래밍가능 디바이스들), 예를 들어, 도 2의 요소들(2041 내지 204N)을 포함한다. 각각의 FPGA는 FPGA들이 신호들을 교환하기 위해 FPGA가 에뮬레이터의 다른 FPGA들(및 잠재적으로 다른 에뮬레이터 하드웨어 컴포넌트들)에 접속되게 하는 하나 이상의 FPGA 인터페이스들을 포함할 수 있다. FPGA 인터페이스는 또한 입력/출력 핀 또는 FPGA 패드로 지칭될 수 있다. 본 명세서에 개시된 일부 실시예들은 FPGA들을 포함하는 에뮬레이터들을 사용하지만, 다른 실시예들은 DUT들을 에뮬레이팅하기 위한 FPGA들 대신에 또는 그와 함께 다른 유형들의 로직 블록들, 예를 들어 맞춤형 FPGA들, 에뮬레이션 또는 프로토타이핑을 위한 특수한 ASIC들, 메모리들 및 입력/출력 디바이스들을 포함할 수 있다.
프로그래밍가능 디바이스는 프로그래밍가능 로직 블록들의 어레이 및 HDL 코드의 설명들에 따라 프로그래밍가능 로직 블록들이 서로 접속될 수 있도록 하는 재구성가능 상호접속부들의 계층구조를 포함할 수 있다. 프로그래밍가능 로직 블록들 각각은 복잡한 조합 기능들 또는 단지 간단한 로직 게이트들, 예를 들어, AND 및 XOR 로직 블록들을 수행하도록 구성될 수 있다.
많은 FPGA들에서, 로직 블록들은 또한 간단한 래치들, 플립-플롭들 또는 더 복잡한 메모리 블록들일 수 있는 메모리 요소들을 포함한다. 상이한 로직 블록들 사이의 상호접속들의 길이에 따라, 신호들은 상이한 시간들에 로직 블록들의 입력 단자들에 도달할 수 있다.
프로그래밍가능 프로세서들(2041 내지 204N)은 하나 이상의 하드웨어 보드들(2121 내지 212M)에 배치될 수 있다. 이러한 보드들 대부분은 하드웨어 유닛, 예를 들어, 2141에 배치될 수 있다. 유닛 내의 보드들은 유닛의 백플레인 또는 임의의 다른 유형들의 접속부들을 사용하여 접속될 수 있다. 또한, 다수의 하드웨어 유닛들(예를 들어, 2141 내지 214K)은 케이블들 또는 멀티-유닛 시스템을 형성하기 위한 임의의 다른 수단에 의해 서로 접속될 수 있다. 일반적으로, 하드웨어 에뮬레이션 또는 프로토타입 시스템(202)은 본 개시의 교시들로부터 벗어남이 없이 단일 보드, 다수의 보드들을 갖는 단일 유닛, 또는 다수의 유닛들을 사용하여 형성될 수 있다.
에뮬레이팅될 DUT의 경우, 에뮬레이터는 호스트 시스템으로부터 DUT에 대한 설명을 포함하는 하나 이상의 비트 파일들을 수신한다. 비트 파일들은 추적 및 주입 로직을 갖는 호스트 시스템에 의해 생성된 DUT의 파티션들, 에뮬레이터의 FPGA들에 대한 파티션들의 맵핑 및 설계 제약들을 추가로 특정한다. 비트 파일들에 기초하여, 에뮬레이터는 DUT의 기능들을 수행하도록 FPGA들을 구성한다. 일부 에뮬레이터들에 있어서, 에뮬레이터의 하나 이상의 FPGA들은 FPGA의 실리콘에 구축된 추적 및 주입 로직을 이미 갖는다. 이러한 유형의 에뮬레이터의 경우, FPGA들은 추적 및 주입 로직을 에뮬레이팅하도록 호스트 시스템에 의해 구성될 필요가 없다.
호스트 시스템(110)은 에뮬레이팅될 DUT의 설명을 (예를 들어, 사용자로부터 또는 데이터 저장부로부터) 수신한다. 일 실시예에서, DUT 설명은 레지스터 전송 언어(register transfer language; RTL)와 같은 하드웨어 설명 언어(hardware description language; HDL)에 있다. 다른 실시예에서, DUT 설명은 네트리스트 레벨 파일들 또는 네트리스트 레벨 파일들과 HDL 파일들의 혼합에 있다. DUT 설명의 일부 또는 전체 DUT 설명이 HDL에 있는 경우, 호스트 시스템은 DUT 설명을 합성하여 DUT 설명에 기초한 게이트 레벨 네트리스트를 생성한다. 호스트 시스템은 DUT의 네트리스트를 사용하여 DUT를 다수의 파티션들로 파티셔닝할 수 있고, 이러한 파티션들 중 일부는 추적 및 주입 로직을 포함한다. 추적 및 주입 로직은 FPGA의 인터페이스들을 통해 교환된 인터페이스 신호들을 추적한다. 추가적으로, 트레이스 및 주입 로직은 추적된 인터페이스 신호들을 FPGA의 로직에 주입하기 위해 사용될 수 있다. 호스트 시스템은 각각의 파티션을 에뮬레이터의 FPGA에 맵핑한다. 일부 에뮬레이터들에 있어서, 추적 및 주입 로직은 단지 FPGA들의 그룹에 대한 선택 파티션들에만 포함된다. 추적 및 주입 로직은 에뮬레이터의 FPGA들 중 하나 이상에 구축될 수 있다. 호스트 시스템은 FPGA들에 맵핑될 멀티플렉서들을 합성할 수 있다. 멀티플렉서들을 인터페이스 신호들을 DUT 로직에 주입하기 위해 추적 및 주입 로직에 의해 사용될 수 있다.
호스트 시스템은 DUT의 각각의 파티션 및 파티션들의 FPGA들에의 맵핑을 설명하는 비트 파일들을 생성한다. 추적 및 주입 로직이 통합된 파티션들의 경우 비트 파일들은 또한 로직의 통합을 설명한다. 비트 파일들은 또한 장소 및 경로 정보 및 설계 제약들을 포함할 수 있다. 호스트 시스템은 비트 파일들을 저장하고, 또한 어느 FPGA들이 DUT의 각각의 컴포넌트를 에뮬레이팅할지(각각의 컴포넌트가 어느 FPGA들에 맵핑될지)를 설명하는 DUT 정보의 컴포넌트들을 저장한다.
요청 시에, 호스트 시스템은 비트 파일들을 에뮬레이터에 송신한다. 호스트 시스템은 DUT를 에뮬레이팅하도록 에뮬레이터에 명령한다. DUT의 에뮬레이션 동안 또는 에뮬레이션의 종료 시에, 호스트 시스템은 에뮬레이션 접속을 통해 에뮬레이터로부터 에뮬레이션 결과들을 수신한다. 에뮬레이션 결과들은 DUT의 에뮬레이션에 기초하여 에뮬레이터에 의해 생성된 데이터 및 정보이다. 에뮬레이션 결과들은 각각의 FPGA의 추적 및 주입 로직에 의해 추적되는 인터페이스 신호들(인터페이스 신호들의 상태들)을 포함한다. 호스트 시스템은 에뮬레이션 결과들을 저장하거나, 이들을 다른 프로세싱 시스템에 송신할 수 있다.
DUT의 에뮬레이션 이후, 사용자는 DUT의 컴포넌트를 디버그하도록 요청할 수 있다. 이러한 요청이 이루어지면, 사용자는 디버그할 에뮬레이션의 시간 기간을 제공할 수 있다. 호스트 시스템은 저장된 정보에 기초하여 어느 FPGA들이 컴포넌트를 에뮬레이팅하도록 구성되는지를 식별한다. 호스트 시스템은 시간 기간과 연관되고 각각의 식별된 FPGA의 추적 및 주입 로직에 의해 추적되는 저장된 인터페이스 신호들을 검색한다. 호스트 시스템은 식별된 FPGA들을 하나씩, 한 번에 여러 개 또는 모두 재-에뮬레이팅하도록 에뮬레이터에 명령한다. 호스트 시스템은 시간 기간 동안 컴포넌트를 재-에뮬레이팅하기 위해 검색된 인터페이스 신호들을 에뮬레이터에 송신한다. 각각의 식별된 FPGA의 추적 및 주입 로직은 호스트 시스템으로부터 수신된 자신의 각각의 인터페이스 신호들을 FPGA에 맵핑된 DUT의 로직에 주입한다. FPGA의 다수의 재-에뮬레이션들의 경우, 결과들은 완전한 디버그 뷰를 갖도록 모두 함께 병합될 수 있다.
호스트 시스템은 컴포넌트의 재-에뮬레이션 동안 식별된 FPGA들의 로직에 의해 추적된 에뮬레이터 신호들로부터 수신한다. 호스트 시스템은 에뮬레이터로부터 수신된 신호들을 저장한다. 재-에뮬레이션 동안 추적된 신호들은 초기 에뮬레이션 동안보다 높은 샘플링 레이트를 가질 수 있다. 예를 들어, 초기 실행에서, 추적된 신호는 매 X 밀리초마다 저장된 하드웨어 상태를 포함할 수 있다. 그러나, 재-에뮬레이션에서 추적된 신호는 매 Y 밀리초마다 저장된 하드웨어 상태를 포함할 수 있고, 여기서 Y는 X보다 작다. 사용자가 재-에뮬레이션 동안 추적된 신호의 파형을 보기를 요청하면, 호스트 시스템은 저장된 신호를 검색하고 신호의 플롯을 디스플레이할 수 있다(신호의 파형을 생성함). 그 후에 사용자는 예를 들어 동일한 컴포넌트를 상이한 시간 기간 동안 재-에뮬레이팅하거나 다른 컴포넌트를 재-에뮬레이팅하도록 요청할 수 있다.
호스트 시스템은 통상적으로 적어도 7개의 서브-시스템들, 즉, 설계 합성기, 맵핑 모듈, 런타임 모듈, 결과 모듈, 디버그 모듈, 파형 모듈 및 저장 모듈을 포함한다. 이러한 서브-시스템들 각각은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합으로 구현될 수 있다. 이러한 컴포넌트들은 함께 에뮬레이터를 구성하고 에뮬레이션 결과들을 모니터링한다.
설계 합성기는 DUT의 HDL을 게이트 레벨 로직으로 변환한다. 에뮬레이팅될 DUT의 경우, 설계 합성기는 DUT에 대한 설명을 수신한다. DUT의 설명이 완전히 또는 부분적으로 HDL(예를 들어, RTL 또는 다른 추상화 레벨)에 있으면, 설계 합성기(210)는 DUT의 HDL을 합성하여 게이트 레벨 로직의 측면에서 DUT의 설명을 갖는 게이트 레벨 네트리스트를 생성한다.
맵핑 모듈은 DUT들을 파티셔닝하고 파티션들을 에뮬레이터 FPGA들에 맵핑한다. 맵핑 모듈은 DUT의 네트리스트를 사용하여 게이트 레벨의 DUT를 다수의 파티션들로 파티셔닝한다. 각각의 파티션의 경우, 맵핑 모듈은 추적 및 주입 로직의 게이트 레벨 설명을 검색하고 로직을 파티션에 통합한다. 전술된 바와 같이, 파티션에 포함된 추적 및 주입 로직은 파티션이 맵핑되는 FPGA의 인터페이스를 통해 교환되는 신호들(추적 인터페이스 신호들)을 추적하도록 구성된다. 추적 및 주입 로직은 파티셔닝 전에 DUT에 통합될 수 있다. 예를 들어, 추적 및 주입 로직은 DUT의 HDL을 합성하기 전에 또는 후에 설계 합성기에 의해 통합될 수 있다. 따라서 추적 및 주입 로직은 파티션들에 매칭하지 않을 수 있고, 파티션들의 서브세트, 수퍼세트이거나 심지어 파티션들과 상이할 수 있다.
추적 및 주입 로직을 포함하는 것에 추가로, 맵핑 모듈은 추적 및 주입 로직에 의해 추적되지 않는 특정 DUT 컴포넌트들의 상태들을 추적하기 위해(추적 및 주입 로직에 의해 추적되는 인터페이스 신호들 이외의 신호들을 추적하기 위해) 추가적인 추적 로직을 파티션에 포함할 수 있다. 맵핑 모듈은 파티셔닝 이전에 DUT에 또는 파티셔닝 이후에 파티션들에 추가적인 추적 로직을 포함할 수 있다. 설계 합성기는 설명을 합성하기 전에 DUT의 HDL 설명에 추가적인 추적 로직을 포함할 수 있다.
맵핑 모듈은 DUT의 각각의 파티션을 에뮬레이터의 FPGA에 맵핑한다. 맵핑 모듈은 설계 규칙들, 설계 제약들(예를 들어, 타이밍 또는 로직 제약들) 및 에뮬레이터에 대한 정보를 사용하여 파티셔닝 및 맵핑을 수행한다. DUT의 컴포넌트들의 경우, 맵핑 모듈은 어느 FPGA들이 각각의 컴포넌트를 에뮬레이팅하는지를 설명하는 정보를 저장 모듈에 저장한다.
파티셔닝 및 맵핑에 기초하여, 맵핑 모듈은 생성된 파티션들 및 에뮬레이터의 각각의 FPGA에 대한 로직의 맵핑을 설명하는 하나 이상의 비트 파일들을 생성한다. 비트 파일들은 DUT의 제약들, FPGA들 사이의 접속들의 라우팅 정보 및 각각의 FPGA 내의 접속들과 같은 추가적인 정보를 포함할 수 있다. 맵핑 모듈은 저장 모듈에 저장될 수 있는 DUT의 각각의 파티션에 대한 비트 파일을 생성할 수 있다. 사용자의 요청에 따라 맵핑 모듈은 비트 파일들을 에뮬레이터로 송신하며, 에뮬레이터는 이를 사용하여 DUT를 에뮬레이팅하도록 FPGA를 구성한다.
에뮬레이터가 추적 및 주입 로직을 포함하는 특수한 ASIC들을 포함하면, 맵핑 모듈은 이들을 DUT에 접속시키도록 허용하는 특정 구성을 생성하거나, 추적된/주입된 신호가 무엇인지 및 정보가 특수한 ASIC 상의 어디에 저장되는지에 대한 정보를 저장할 수 있다.
런타임 모듈은 에뮬레이터 상에서 수행되는 에뮬레이션들을 제어한다. 런타임 모듈은 에뮬레이터가 에뮬레이션을 실행하는 것을 시작 또는 중지하게 할 수 있다. 추가적으로, 런타임 모듈은 입력 신호들/데이터를 에뮬레이터에 제공할 수 있다. 입력 신호들은 접속부를 통해 에뮬레이터에 직접 또는 다른 입력 신호 디바이스들을 통해 간접적으로 제공될 수 있다. 예를 들어, 런타임 모듈을 갖는 호스트 시스템은 입력 신호들을 에뮬레이터에 제공하도록 입력 신호 디바이스를 제어할 수 있다. 입력 신호 디바이스는 예를 들어, 테스트 보드(직접적으로 또는 케이블들을 통해), 신호 생성기, 다른 에뮬레이터 또는 다른 호스트 시스템일 수 있다.
결과 모듈은 에뮬레이터에 의해 생성된 에뮬레이션 결과들을 프로세싱한다. 에뮬레이션 동안 및/또는 에뮬레이션을 완료한 후, 결과 모듈은 에뮬레이션 동안 생성된 에뮬레이터로부터 에뮬레이션 결과들을 수신한다. 에뮬레이션 결과들은 에뮬레이션 동안 추적된 신호들을 포함한다. 구체적으로, 에뮬레이션 결과들은 각각의 FPGA에 의해 에뮬레이팅된 추적 및 주입 로직에 의해 추적된 인터페이스 신호들을 포함한다. 에뮬레이션 결과들은 또한 DUT에 포함된 추가적인 로직에 의해 추적된 신호들을 포함할 수 있다. 각각의 추적된 신호는 에뮬레이션의 다수의 사이클들에 걸쳐 있을 수 있다. 추적된 신호는 다수의 하드웨어 상태들을 포함하고, 각각의 하드웨어 상태는 에뮬레이션 시간과 연관된다. 결과 모듈은 저장 모듈에서 수신된 추적된 신호들을 저장한다. 각각의 저장된 신호의 경우, 결과 모듈은 어느 FPGA가 추적된 신호를 생성했는지를 표시하는 정보를 저장할 수 있다.
디버그 모듈은 사용자들이 DUT 컴포넌트들을 디버그하도록 허용한다. 에뮬레이터가 DUT를 에뮬레이팅하고 결과 모듈이 에뮬레이션 동안 추적 및 주입 로직에 의해 추적된 인터페이스 신호들을 수신한 후, 사용자는 특정 시간 기간 동안 컴포넌트들을 재-에뮬레이팅함으로써 DUT의 컴포넌트를 디버그하도록 요청할 수 있다. 컴포넌트를 디버그하도록 하는 요청에서, 사용자는 컴포넌트를 식별하고 디버그할 에뮬레이션의 시간 기간을 표시한다. 사용자의 요청은 또한, 신호들을 추적하는 로직에 의해 하드웨어 상태들이 얼마나 자주 저장되어야 하는지를 표시하는 샘플링 레이트를 포함할 수 있다.
디버그 모듈은 저장 모듈의 맵핑 모듈에 의해 저장된 정보에 기초하여 컴포넌트를 에뮬레이팅하도록 구성되는 에뮬레이터의 하나 이상의 FPGA들을 식별한다. 각각의 식별된 FPGA의 경우, 디버그 모듈은 사용자에 의해 표시된 시간 기간 동안 FPGA의 추적 및 주입 로직에 의해 추적된 인터페이스 신호를 저장 모듈로부터 검색한다(즉, 시간 기간과 연관되는 추적 및 주입 로직에 의해 추적되는 하드웨어 상태들을 검색함).
디버그 모듈은 검색된 인터페이스 신호들을 에뮬레이터에 송신한다. 디버그 모듈은 식별된 FPGA들을 실행하고 각각의 식별된 FPGA의 추적 및 주입 로직에 대해 요청된 시간 기간 동안 컴포넌트를 재-에뮬레이팅하기 위해 FPGA의 로직에 그 각각의 추적된 신호들을 주입하도록 디버그 모듈에 명령한다. 디버그 모듈은 또한 추적 로직이 적절한 간격들로 하드웨어 상태들을 추적하도록 사용자에 의해 제공된 샘플링 레이트를 에뮬레이터에 송신할 수 있다.
컴포넌트를 디버그하기 위해, 에뮬레이터는 단지 컴포넌트가 맵핑된 FPGA들을 실행하면 된다. 추가적으로, 컴포넌트의 재-에뮬레이션은 처음부터 시작할 필요가 없고 사용자가 원하는 임의의 포인트에서 시작할 수 있다.
식별된 FPGA의 경우, 디버그 모듈은 식별된 FPGA의 동일한 구성으로 다수의 에뮬레이터 FPGA들을 로딩하도록 에뮬레이터에 명령들을 송신할 수 있다. 디버그 모듈은 추가적으로 다수의 FPGA들을 병렬로 실행하도록 에뮬레이터에 명령한다. 다수의 FPGA들로부터의 각각의 FPGA는 더 짧은 시간에 더 큰 시간 윈도우를 생성하기 위해 인터페이스 신호들의 상이한 시간 윈도우와 함께 실행된다. 예를 들어, 식별된 FPGA가 특정 양의 사이클들을 실행하는 것은 한 시간이 소요될 수 있다. 그러나 식별된 FPGA의 구성으로 다수의 FPGA들이 로딩되고 FPGA들 각각이 사이클들의 서브세트를 실행하는 경우, FPGA들이 모든 사이클들을 집합적으로 실행하는 것은 단지 몇 분이 소요될 수 있다.
사용자는 재-에뮬레이팅할 DUT 신호들의 리스트 또는 계층구조를 식별할 수 있다. 이를 가능하게 하기 위해, 디버그 모듈은 FPGA가 신호들의 리스트 또는 계층구조를 에뮬레이팅할 필요가 있다고 결정하고, 필요한 인터페이스 신호들을 검색하고, 검색된 인터페이스 신호들을 재-에뮬레이션을 위해 에뮬레이터에 송신한다. 따라서, 사용자는 디버그/재-에뮬레이팅할 DUT의 임의의 요소(예를 들어, 컴포넌트 또는 신호)를 식별할 수 있다.
파형 모듈은 추적된 신호들에 기초하여 파형들을 생성한다. 사용자가 에뮬레이션 실행 동안 추적된 신호의 파형을 보기를 요청하면, 호스트 시스템은 저장 모듈로부터 신호를 검색한다. 파형 모듈은 신호의 플롯을 사용자에게 디스플레이한다. 하나 이상의 신호들의 경우, 신호들이 에뮬레이터로부터 수신될 때, 파형 모듈은 신호들의 플롯들을 자동으로 생성할 수 있다.
상세한 설명 - 시맨틱 지원
기호 '상업적 솔루션'은, 오직 하기 단락의 경우에만, 기술의 문제를 해결하기 위해 상업적으로 유용한 엔지니어링 도메인-특정(및 그에 따른 비-선제적 - Bilski 참조) 전자 구조, 특정 머신들에 대한 프로세스, 제조가능한 회로(및 이들의 처치-튜링(Church-Turing) 등가물들) 또는 물질의 조성
엔지니어링, 즉, 과학 애플리케이션의 상업적 용도 또는 기술의 상업적 용도를 의미한다.
기호 '추상'은 (하나 이상의 자연 법칙들의 과학적 적용이고{Benson 참조} 기술 문제를 해결하는{Diehr 참조} 또는 기존의 상업적 솔루션에 대해 개선되는{Diehr 참조} 새로운 상업적 솔루션에 대해 본 명세서에 개시된 임의의 실시예들에 대해 특허 청구항에서 사용될 때) 다음과 같이 발명자(들){MPEP 2111.01 참조}에 의해 정확하게 정의된다:
a) 새로운 상업적 솔루션은, 신규하지 않은 경우(예를 들어, 동일한 종래 기술에서 널리 주지되어 있고{Alice 참조} 그리고/또는 균등한 종래 기술의 솔루션들의 사용이 과학, 엔지니어링, 또는 상업에서 널리 지배적인 것{Bilski 참조}) '추상적'이며, 따라서 예를 들어, 그 상업적 솔루션이 균등한 종래 기술의 솔루션들과 어떻게 상이한지를 "이해하기 어렵기" 때문에{'추상'에 대한 Merriam-Webster 정의 참조} 35 U.S.C. 102 하에서 특허가능하지 않거나; 또는
b) 새로운 상업적 솔루션은, 자명한 경우, 즉, 기존의 선행 기술이 적어도 하나의 유사한 선행 기술 솔루션을 포함하거나{KSR 참조}, 기존의 선행 기술이 당업자에 의해 새로운 상업적 솔루션에 균등하도록 조합될 수 있는 적어도 2개의 종래 기술 항목들을 포함하는 경우{"PHOSITA", MPEP 2141-2144 참조} '추상적'이고, 따라서 예를 들어, 기존의 종래 기술의 PHOSITA-조합/-적용으로부터 새로운 상업적 솔루션이 얼마나 상이한지를 "이해하기 어렵기" 때문에 35 U.S.C. 103 하에서 특허가능하지 않거나; 또는
c) 새로운 상업용 솔루션은, 활성화 설명에서 불충분한 안내가 있기 때문에, 또는 특정되지 않은 요소들, 파라미터들, 또는 기능성으로 오직 일반적 구현이 설명되기 때문에{Mayo 참조} 활성화 설명으로 개시되지 않아서, 예를 들어, PHOSITA에 의해 수행될 특수한 프로그래밍{Katz 참조} 또는 회로 설계를 요구함이 없이는 새로운 상업적 솔루션의 유용한 실시예를 인스턴스화할 수 없는 경우 '추상적'이고, 따라서 예를 들어, 새로운 상업적 솔루션의 임의의 실시예를 상업적으로 사용하는 방법을 "이해하기 어렵기" 때문에 35 U.S.C. 112 하에서 특허가능하지 않다.
상세한 설명 - 결론
전술된 상세한 설명은, 특징들, 구조들, 기능들 또는 특성들 또는 이들의 조합이 본 명세서에 개시된 임의의 문제들을 해결하는지 여부와 관계없이 이러한 특징들, 구조들, 기능들 또는 특성들 또는 이들의 조합이 당업자의 지식에 비추어 전체적으로 본 명세서에 기초하는 범위까지 그리고 제한 없이 청구항들의 범위까지, 본 명세서에 설명된 개별적인 특징들, 구조들, 기능들 또는 특성들 또는 이들의 조합 및 2개 이상의 이러한 특징들, 구조들, 기능들 또는 특성들의 임의의 조합을 분리하여 의미한다. 청구된 발명의 실시예가 특정 특징, 구조, 기능 또는 특성을 포함할 때, 예를 들어, 다른 특징, 구조, 기능 또는 특성에 대한 대안으로서, 명시적으로 설명되든 아니든, 다른 실시예들과 관련하여 이러한 특징, 구조, 기능 또는 특성을 사용하는 것은 당업자의 지식 내에 있다.
전술된 상세한 설명을 고려하여, 본 명세서에 설명된 원리들로부터 벗어남이 없이 본 명세서에 설명된 요소들의 기능 및 배열과 같은 혁신들, 실시예들 및/또는 예들의 범위 내에서 많은 변형들이 이루어질 수 있음은 당업자에게 자명할 것이다. 당업자들에게 명백한 바와 같이, 실시예의 하나 이상의 요소들은 다른 실시예의 하나 이상의 요소들로 대체될 수 있다. 본 명세서에 설명된 실시예들은 본 발명의 원리 및 그 유용한 적용을 의미하여, 다양한 실시예들 및 변형들이 의미하는 특정 용도에 어떻게 적합한지를 당업자들이 이해할 수 있도록 한다.
청구된 발명들의 혁신들, 실시예들 및/또는 예들에 대한 전술된 상세한 설명은 예시 및 설명의 목적으로 제공되었다. 이는, 총망라하는 것으로 의도되지 않으며 본 발명들을 설명된 정확한 형태들로 제한하려는 것도 아니며, 본 명세서에 개시된 원리들 및 특징들에 일치하는 가장 넓은 범위에 부합한다. 명백히, 많은 변형들이 당업자에 의해 인식될 것이다. 제한없이, 본 특허 출원에서 설명되거나, 의미하거나 또는 참조로 통합된 임의의 및 모든 등가물은 혁신들, 실시예들 및/또는 예들에 대한 본 명세서의 설명에 참조로 구체적으로 통합된다. 또한, 임의의 하나의 실시예에 대해 본 명세서에서 참조로 설명되거나, 의미하거나 통합된 임의의 및 모든 변형들은 또한 모든 다른 실시예들에 대해 교시된 것으로 간주되어야 한다. 임의의 그러한 변형들은, 현재 공지된 변형들뿐만 아니라 장래의 변형들 둘 모두를 포함하여, 예를 들어, 본 명세서에서 사용된 임의의 요소는, 장래의 등가물의 구조와 관계없이, 동일한 기능을 제공하는 장래의 등가 엘리먼트를 포함한다.
청구된 발명들의 범위는 다음의 청구항들 및 등가물들에 의해 정의되고 판단되는 것으로 의도된다. 이하의 청구항들은 상세한 설명에 통합되며, 각각의 청구항은 별개의 실시예로서 독자적으로 기재된다. 개시된 실시예들은 청구항들에서 명시적으로 인용된 것보다 더 많은 특징들로 설명될 수 있다.

Claims (13)

  1. 하드웨어 에뮬레이션 시스템 제어 블록에 있어서,
    에뮬레이션 시스템에서 사용되는 N개의 클록 신호들 중 상이한 클록 신호와 연관된 지연 값을 표현하는 제1 신호를 각각 수신하는 N개의 지연 블록들 - 각각의 클록 신호와 연관된 상기 지연 값은 상기 클록 신호의 전이(transition) 시간들을 정의함 -;
    상기 N개의 지연 값들의 최소값을 계산하도록 적응된(adapted) 최소 지연 계산기 블록;
    최소 지연에 매칭하는 연관된 지연 값을 갖는 각각의 클록에 대한 전이를 스케줄링하고, 상기 최소 지연 값에 매칭하지 않는 지연 값을 갖는 각각의 클록의 연관된 지연을 감분시키도록 구성된 클록 스케줄러 - 상기 클록 스케줄러는 상기 N개의 지연 블록들 각각에 상기 최소 지연을 공급함 -; 및
    상기 클록 스케줄러에 의해 스케줄링되는 대로 상기 클록 신호들에 대한 전이들을 야기하도록 구성된 클록 신호 생성기를 포함하는, 하드웨어 에뮬레이션 시스템 제어 블록.
  2. 제1항에 있어서,
    상기 N개의 지연 블록들 중 상이한 지연 블록과 각각 연관되고 자신의 연관된 지연 블록의 출력을 수신하도록 적응된 N개의 제1 플립-플롭(flip-flop)들;
    상기 N개의 지연 블록들 중 상이한 지연 블록과 각각 연관되고 자신의 연관된 지연 블록의 출력을 자신의 제1 입력에서 수신하도록 적응된 N개의 제1 멀티플렉서들 - 상기 제1 멀티플렉서들 각각은 자신의 연관된 플립-플롭의 출력을 수신하도록 적응된 제2 입력을 갖고, 각각의 멀티플렉서는 트리거 신호가 어서트될 때 자신의 제2 입력을 상기 최소 지연 계산기에 전달하도록 적응되고, 상기 트리거 신호는 사용자에 의해 삽입된 에뮬레이션 브레이크에 응답하여 설계의 에뮬레이션을 중단함 -;
    상기 클록 생성기의 출력을 수신하도록 적응된 제2 제1 플립-플롭; 및
    자신의 제1 입력에서 상기 클록 스케줄러의 출력 및 자신의 제2 입력에서 상기 제2 플립-플롭의 출력을 수신하도록 적응된 제2 멀티플렉서를 더 포함하고, 상기 멀티플렉서는 상기 트리거 신호가 어서트되지 않으면 자신의 제1 입력을 자신의 출력에 전달하고 상기 트리거 신호가 어서트되면 자신의 제2 입력을 자신의 출력에 전달하고, 상기 제2 멀티플렉서의 출력은 회로 설계를 에뮬레이팅하는 하드웨어 에뮬레이션 시스템에 적용되는 것인, 하드웨어 에뮬레이션 시스템 제어 블록.
  3. 제2항에 있어서,
    상기 하드웨어 에뮬레이션 시스템 제어 블록은 상기 에뮬레이션의 사이클 K+1 동안 상기 클록 신호들의 에뮬레이션 사이클 K에 대응하는 순차적 요소들의 값들을 컴퓨팅하는 것인, 하드웨어 에뮬레이션 시스템 제어 블록.
  4. 제3항에 있어서,
    상기 하드웨어 에뮬레이션 시스템 제어 블록은 상기 에뮬레이션의 사이클 K+1 동안 상기 에뮬레이션의 사이클 K+1에 대한 클록들의 값들을 컴퓨팅하는 것인, 하드웨어 에뮬레이션 시스템 제어 블록.
  5. 제2항에 있어서,
    각각의 지연 블록은,
    자신의 제1 입력에서 상기 최소 지연을 수신하도록 적응된 감산기;
    상기 지연 블록의 출력을 수신하고 상기 감산기의 제2 입력에 자신의 출력을 공급하는 제1 플립-플롭;
    자신의 제1 입력에서 상기 최소 지연 및 자신의 제2 입력에서 상기 지연 블록의 출력을 수신하는 XOR 로직;
    상기 XOR 로직의 출력을 수신하는 제2 플립-플롭; 및
    자신의 제1 입력에서 상기 블록과 연관된 상기 지연 값 및 자신의 제2 입력에서 상기 감산기의 출력을 수신하는 멀티플렉서를 포함하고, 상기 멀티플렉서는 상기 제2 플립-플롭의 출력 신호에 응답하여 자신의 출력을 공급하는 것인, 하드웨어 에뮬레이션 시스템 제어 블록.
  6. 제4항에 있어서,
    제1 신호를 생성하기 위해 상기 N개의 클록 신호들 중 적어도 제1 클록 신호의 에지들을 검출하도록 구성된 에지 검출기;
    자신의 인에이블 핀에서 상기 제1 신호 및 자신의 클록 핀에서 시스템 클록을 수신하는 제1 플립-플롭;
    자신의 인에이블 핀에서 상기 제1 신호 및 자신의 클록 핀에서 시스템 클록을 수신하는 제2 플립-플롭; 및
    상기 제1 플립-플롭의 출력 신호를 수신하고 상기 제2 플립-플롭의 데이터 입력에 데이터를 공급하는 조합 로직을 더 포함하는 것인, 하드웨어 에뮬레이션 시스템 제어 블록.
  7. 로직 회로에 있어서,
    클록 신호의 에지들을 검출하고 제1 신호를 생성하도록 구성된 에지 검출기;
    자신의 인에이블 핀에서 상기 제1 신호 및 자신의 클록 핀에서 시스템 클록을 수신하는 제1 플립-플롭;
    자신의 인에이블 핀에서 상기 제1 신호 및 자신의 클록 핀에서 시스템 클록을 수신하는 제2 플립-플롭; 및
    상기 제1 플립-플롭의 출력 신호를 수신하고 상기 제2 플립-플롭의 데이터 입력에 데이터를 공급하는 조합 로직을 포함하는, 로직 회로.
  8. 회로 설계의 하드웨어 에뮬레이션을 제어하는 방법에 있어서,
    N개의 클록 신호들 중 상이한 클록 신호 각각과 연관된 지연 값을 표현하는 신호를 수신하는 단계 - 각각의 클록 신호와 연관된 상기 지연 값은 상기 클록 신호의 전이 시간들을 정의함 -;
    상기 N개의 지연 값들의 최소값을 계산하는 단계;
    최소 지연에 매칭하는 연관된 지연 값을 갖는 각각의 클록에 대한 전이를 스케줄링하는 단계;
    상기 최소 지연 값에 매칭하지 않는 지연 값을 갖는 각각의 클록의 연관된 지연을 상기 최소 지연만큼 감분시키는 단계; 및
    상기 스케줄링된 전이들 또는 상기 감분된 지연들에 따라 상기 클록 신호들에 대한 전이들을 생성하는 단계를 포함하는, 회로 설계의 하드웨어 에뮬레이션을 제어하는 방법.
  9. 제8항에 있어서,
    상기 N개의 클록들 각각에 대해, 직전 사이클의 증분된 지연 또는 상기 스케줄링된 전이 중 하나를 저장하는 단계;
    트리거 신호에 응답하여 상기 감분된 지연 또는 상기 저장된 스케줄링된 전이를 전달하는 단계;
    직전 클록 신호들의 생성된 전이들을 저장하는 단계; 및
    각각의 클록 신호에 대해, 상기 트리거 신호에 응답하여 자신의 현재 전이 또는 상기 클록 신호의 직전 전이 중 어느 하나를 전달하는 단계를 더 포함하는, 회로 설계의 하드웨어 에뮬레이션을 제어하는 방법.
  10. 제9항에 있어서,
    상기 에뮬레이션의 사이클 K+1 동안 상기 클록 신호들의 에뮬레이션 사이클 K에 대응하는 순차적 요소들의 값들을 컴퓨팅하는 단계를 더 포함하는, 회로 설계의 하드웨어 에뮬레이션을 제어하는 방법.
  11. 제9항에 있어서,
    상기 에뮬레이션의 사이클 K+1 동안 상기 에뮬레이션의 사이클 K+1에 대한 상기 클록들의 값들을 컴퓨팅하는 단계를 더 포함하는, 회로 설계의 하드웨어 에뮬레이션을 제어하는 방법.
  12. 제11항에 있어서,
    제1 신호를 생성하기 위해 상기 N개의 클록 신호들 중 적어도 제1 클록 신호의 에지들을 검출하는 단계;
    자신의 클록 핀에서 시스템 클록을 수신하는 제1 플립-플롭의 인에이블 핀에 상기 제1 신호를 적용하는 단계;
    자신의 클록 핀에서 상기 시스템 클록을 수신하는 제2 플립-플롭의 인에이블 핀에 상기 제1 신호를 적용하는 단계;
    조합 로직의 입력에 상기 제1 플립-플롭의 출력을 적용하는 단계; 및
    상기 제2 플립-플롭의 데이터 입력에 상기 조합 로직의 출력을 적용하는 단계를 더 포함하는, 회로 설계의 하드웨어 에뮬레이션을 제어하는 방법.
  13. 데이터 및 클록 신호들을 파이프라이닝(pipelining)하는 방법에 있어서,
    제1 신호를 생성하기 위해 N개의 클록 신호들 중 적어도 제1 클록 신호의 에지들을 검출하는 단계;
    자신의 클록 핀에서 시스템 클록을 수신하는 제1 플립-플롭의 인에이블 핀에 상기 제1 신호를 적용하는 단계;
    자신의 클록 핀에서 상기 시스템 클록을 수신하는 제2 플립-플롭의 인에이블 핀에 상기 제1 신호를 적용하는 단계;
    조합 로직의 입력에 상기 제1 플립-플롭의 출력을 적용하는 단계; 및
    상기 제2 플립-플롭의 데이터 입력에 상기 조합 로직의 출력을 적용하는 단계를 더 포함하는,데이터 및 클록 신호들을 파이프라이닝하는 방법.
KR1020217011251A 2018-09-25 2019-09-25 에뮬레이션 및 프로토타이핑에서 오버레이된 클록 및 데이터 전파의 코히어런트 관찰가능성 및 제어가능성 KR20210065964A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862736111P 2018-09-25 2018-09-25
US62/736,111 2018-09-25
PCT/US2019/052996 WO2020069009A1 (en) 2018-09-25 2019-09-25 Coherent observability and controllability of overlaid clock and data propagation in emulation and prototyping

Publications (1)

Publication Number Publication Date
KR20210065964A true KR20210065964A (ko) 2021-06-04

Family

ID=69884838

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217011251A KR20210065964A (ko) 2018-09-25 2019-09-25 에뮬레이션 및 프로토타이핑에서 오버레이된 클록 및 데이터 전파의 코히어런트 관찰가능성 및 제어가능성

Country Status (6)

Country Link
US (1) US11763053B2 (ko)
EP (1) EP3857331A4 (ko)
KR (1) KR20210065964A (ko)
CN (1) CN112753034B (ko)
TW (1) TWI821414B (ko)
WO (1) WO2020069009A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11526641B2 (en) * 2020-08-25 2022-12-13 Synopsys, Inc. Formal gated clock conversion for field programmable gate array (FPGA) synthesis
CN113608574B (zh) * 2021-08-09 2024-06-11 贵州省计量测试院 一种计算机微秒级时间输出方法、系统及校准系统
CN113946937B (zh) * 2021-08-27 2023-01-10 芯华章科技股份有限公司 同步方法及仿真器
CN116720468B (zh) * 2023-06-12 2024-01-19 南京邮电大学 一种结合神经网络的单元库时序模型构建方法
CN117350210B (zh) * 2023-11-09 2024-03-01 上海合见工业软件集团有限公司 一种时钟控制系统

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5671258A (en) * 1994-12-20 1997-09-23 3Com Corporation Clock recovery circuit and receiver using same
US6009256A (en) * 1997-05-02 1999-12-28 Axis Systems, Inc. Simulation/emulation system and method
US6785873B1 (en) 1997-05-02 2004-08-31 Axis Systems, Inc. Emulation system with multiple asynchronous clocks
US6785829B1 (en) * 2000-06-30 2004-08-31 Intel Corporation Multiple operating frequencies in a processor
JP4125675B2 (ja) * 2001-08-14 2008-07-30 ベリシティー デザイン, インコーポレイテッド タイミングに鈍感なグリッチのない論理システムおよび方法
US7151399B2 (en) 2004-02-02 2006-12-19 Toshiba America Electronic Components, Inc. System and method for generating multiple clock signals
US7509107B2 (en) 2005-01-05 2009-03-24 Anritsu Company Method and apparatus for extending the lower frequency operation of a sampler based VNA
DE502005001065D1 (de) * 2005-05-02 2007-08-30 Accemic Gmbh & Co Kg Verfahren und Vorrichtung zur Emulation einer programmierbaren Einheit
US7478232B2 (en) 2006-01-23 2009-01-13 Honeywell International Inc. Reset detector
US8706469B2 (en) 2006-01-31 2014-04-22 Cadence Design Systems, Inc. Method and apparatus for increasing the efficiency of an emulation engine
US7930165B2 (en) 2008-02-07 2011-04-19 Accemic Gmbh & Co. Kg Procedure and device for emulating a programmable unit providing system integrity control
CN101739473B (zh) * 2008-10-22 2011-11-09 盛群半导体股份有限公司 电路模拟仿真系统
US8620638B1 (en) * 2008-12-15 2013-12-31 Xilinx, Inc. Method of performing a simulation of a design under test and a circuit for enabling testing of a circuit design
US10423740B2 (en) * 2009-04-29 2019-09-24 Synopsys, Inc. Logic simulation and/or emulation which follows hardware semantics
US20130282352A1 (en) * 2011-05-20 2013-10-24 Grayskytech Llc Real time logic simulation within a mixed mode simulation network
US8736338B2 (en) 2012-04-11 2014-05-27 Freescale Semiconductor, Inc. High precision single edge capture and delay measurement circuit
US9946823B2 (en) * 2013-08-12 2018-04-17 Mentor Graphics Corporation Dynamic control of design clock generation in emulation
GB2519181B (en) * 2014-03-31 2015-09-09 Imagination Tech Ltd Clock verification
US9438256B2 (en) 2014-06-03 2016-09-06 Apple Inc. Slow to fast clock synchronization
TWI533154B (zh) * 2014-09-17 2016-05-11 瑞昱半導體股份有限公司 數位電路設計方法及相關的電腦程式產品
US9824175B1 (en) 2014-10-01 2017-11-21 Cadence Design Systems, Inc. Method and system of evaluation of validity of a refinement rule for a hardware emulation
US10176012B2 (en) * 2014-12-12 2019-01-08 Nxp Usa, Inc. Method and apparatus for implementing deterministic response frame transmission
US9996645B2 (en) * 2015-04-06 2018-06-12 Synopsys, Inc. Method and apparatus for modeling delays in emulation
US10565335B2 (en) * 2016-03-04 2020-02-18 Montana Systems Inc. Event-driven design simulation
EP3625710A4 (en) 2017-05-17 2021-06-02 Synopsys, Inc. PROCEDURE FOR COMPRESSING AN EMULATION TIMELINE IN THE PRESENCE OF DYNAMIC RE-PROGRAMMING OF WATCHES

Also Published As

Publication number Publication date
TWI821414B (zh) 2023-11-11
EP3857331A1 (en) 2021-08-04
TW202030571A (zh) 2020-08-16
US20200097625A1 (en) 2020-03-26
CN112753034A (zh) 2021-05-04
WO2020069009A1 (en) 2020-04-02
US11763053B2 (en) 2023-09-19
CN112753034B (zh) 2024-03-12
EP3857331A4 (en) 2022-09-21

Similar Documents

Publication Publication Date Title
US10719644B2 (en) Method and framework to dynamically split a testbench into concurrent simulatable multi-processes and attachment to parallel processes of an accelerated platform
US11763053B2 (en) Coherent observability and controllability of overlaid clock and data propagation in emulation and prototyping
US10949591B1 (en) Hardware based state signature generation and check for test and debug of semiconductor circuit functionality
US10867091B1 (en) Machine learning based power optimization using parallel training and localized data generation
US10846455B2 (en) Automatic definition and extraction of functional coverage metric for emulation-based verification
US10185794B2 (en) Overlaying of clock and data propagation in emulation
US10949589B2 (en) Method for compression of emulation time line in presence of dynamic re-programming of clocks
US10796048B1 (en) Adding delay elements to enable mapping a time division multiplexing circuit on an FPGA of a hardware emulator
US11327790B1 (en) Event-level parallel simulation using dynamic synchronization
US10878153B1 (en) Apparatuses and methods for accurate and efficient clock domain and reset domain verification with register transfer level memory inference
KR20210129071A (ko) 상관된 샘플 생성 및 효율적인 통계적 시뮬레이션을 사용하여 타이밍 수율 및 수율 병목을 컴퓨팅하기 위한 신규한 방법
US20180260508A1 (en) Method And Apparatus For Modeling Delays In Emulation
US11275877B2 (en) Hardware simulation systems and methods for reducing signal dumping time and size by fast dynamical partial aliasing of signals having similar waveform
US10599800B2 (en) Formal clock network analysis, visualization, verification and generation
US11003819B1 (en) Method to enable multiple users of embedded-software debug to share a single hardware resource
KR102545621B1 (ko) 상태-유지 루프들 및 발진 루프들을 식별하기 위한 하드웨어 시뮬레이션 시스템들 및 방법들
US11475293B1 (en) Learning-based toggle estimation
US10962595B1 (en) Efficient realization of coverage collection in emulation
US10579760B2 (en) Force/release support in emulation and formal verification
US11176293B1 (en) Method and system for emulation clock tree reduction
CN112818627A (zh) 电路设计、测试和/或制造的更有效/有用的电子结构
CN112883679A (zh) 在多电压设计中加油站的自动生成
Skahill A designer's guide to VHDL design and verification

Legal Events

Date Code Title Description
A201 Request for examination