KR102545621B1 - 상태-유지 루프들 및 발진 루프들을 식별하기 위한 하드웨어 시뮬레이션 시스템들 및 방법들 - Google Patents

상태-유지 루프들 및 발진 루프들을 식별하기 위한 하드웨어 시뮬레이션 시스템들 및 방법들 Download PDF

Info

Publication number
KR102545621B1
KR102545621B1 KR1020217012189A KR20217012189A KR102545621B1 KR 102545621 B1 KR102545621 B1 KR 102545621B1 KR 1020217012189 A KR1020217012189 A KR 1020217012189A KR 20217012189 A KR20217012189 A KR 20217012189A KR 102545621 B1 KR102545621 B1 KR 102545621B1
Authority
KR
South Korea
Prior art keywords
boolean
state
emulation
loop
circuit
Prior art date
Application number
KR1020217012189A
Other languages
English (en)
Other versions
KR20210057183A (ko
Inventor
올리비에 쿠데르트
플로렌트 두루
프랑수아 페넬로
Original Assignee
시놉시스, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 시놉시스, 인크. filed Critical 시놉시스, 인크.
Publication of KR20210057183A publication Critical patent/KR20210057183A/ko
Application granted granted Critical
Publication of KR102545621B1 publication Critical patent/KR102545621B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/333Design for testability [DFT], e.g. scan chain or built-in self-test [BIST]
    • 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
    • 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

Landscapes

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

Abstract

회로 하드웨어 에뮬레이션 모듈은 에뮬레이트되는 그래프의 발진 서브그래프들을 식별하거나, 또는 에뮬레이트되는 그래프의 상태-유지 서브그래프들을 식별하도록 구성된다. 에뮬레이션 모듈은, 에뮬레이트되는 회로 내에서 하나 이상의 루프를 식별하고, 에뮬레이트되는 회로의 적어도 일부의 비순환 에뮬레이션을 생성하고 ― 비순환 에뮬레이션은 하나 이상의 루프 브레이커에 의해 특성화됨 ―, 비순환 에뮬레이션을 특성화하는 루프 브레이커들의 양(n)에 적어도 부분적으로 기초하여, 하드웨어-기반 루프 검출기 회로의 루프 검출기 에뮬레이션을 생성하고 ― 루프 검출기 에뮬레이션은 발진 검출기 또는 상태-유지 검출기 중 적어도 하나를 포함함 ―, 에뮬레이트되는 회로의 발진 상태 또는 상태-유지 상태 중 적어도 하나를 나타내는 출력을 생성하기 위해, 에뮬레이트되는 회로에 대한 복수의 입력 값들에 대해 루프 검출기 에뮬레이션을 실행한다.

Description

상태-유지 루프들 및 발진 루프들을 식별하기 위한 하드웨어 시뮬레이션 시스템들 및 방법들
관련 출원들에 대한 상호 참조
본 출원은 2018년 9월 25일자로 출원된 미국 출원 일련 번호 제62/735,930호의 35 USC 119(e) 하의 이익을 주장하며, 그 내용은 그 전체가 참조로 본원에 포함된다.
본 발명의 분야
본 발명은 집적 회로 에뮬레이션에 관한 것으로, 더 구체적으로, 에뮬레이션들을 통해 집적 회로 설계 내의 루프들의 특성들을 검출하는 것에 관한 것이다.
저작권 공고
본 특허 문서의 양수인은, 미국 특허청의 파일들에 나타나 있는 바와 같이, 특허 문서 자체 또는 특허 출원의 누군가에 의한 팩시밀리 복제에 대해 이의가 없지만, 그렇지 않은 경우에는, 저작권에 의해 보호되는 임의의 포함된 저작물들에 있는 모든 권리들을 보유한다.
명세서 ― 포기
다음의 배경, 요약, 및 상세한 설명에서, 제목들은 반드시 제한적인 것으로 해석되지 않아야 한다. 다음의 배경, 요약, 및 상세한 설명에서, 임의의 발행물의 인용 또는 식별은 청구되거나 또는 설명되는 실시예들 중 임의의 것에 대한 선행 기술로서의 관련성 또는 지위를 나타내지 않는다. 텍스트가 모두 이탤릭체인 단락들은 다수의 Synopsys 특허 명세서들에 대해 공통인 텍스트를 나타낸다.
칩(예를 들어, 집적 회로 칩) 설계의 하나의 단계는 네트리스트(netlist)의 정확성을 검증하는 것이다. 네트리스트의 시뮬레이션은, 더 많은 입력 벡터들로 정확성 커버리지를 증가시키는 것이 연산적으로 실현가능하기 때문에, 설계 검증을 위한 바람직한 기법이다.
특정 네트리스트들은, 신호의 값이 그 자체에 의존할 수 있기 때문에, 소프트웨어 또는 에뮬레이터들로 이들 네트리스트들을 시뮬레이트하는 데 있어서 어려움들을 생성하는 것으로 알려진 루프들을 포함한다. 신호가 그 자체에 의존할 때, 회로는, 발진 신호 출력(신호가 결코 안정화되지 않기 때문에 정의되지 않은 거동을 생성함) 및/또는 상태-유지 신호(시간에 관하여 원하지 않는 종속성을 생성함)와 같은 결함 거동들에 의해 특성화될 수 있다.
루프들의 정적 분석은, 소프트웨어에 의해 구현되는 에뮬레이션 동안 루프가 발진 상태인지 또는 상태-유지 상태인지를 평가하기 위해, 연산적으로 너무 비용이 많이 드는 것으로 알려져 있다. 따라서, 결함 루프들은 칩 설계 동안 인지되지 않게 될 수 있고, 네트리스트를 동작-불능 상태로 만들 수 있거나 또는 수동으로 디버깅하기 어렵게 만들 수 있다.
청구항들은 본 개시내용 내에서 발견되는 혁신들, 실시예들, 및/또는 예들 중 하나 이상의 간단한 설명을 나타낸다.
특정 실시예들은, 하드웨어 시뮬레이션들로 네트리스트를 구현함으로써, 상태 유지 루프들 및/또는 발진 루프들을 식별하기 위한 소프트웨어 에뮬레이션 구성들에 관한 것이다. 특정 실시예들은 추가적인 하드웨어 로직으로 루프들을 인스트루먼팅(instrument)하며, 추가적인 하드웨어 로직은 원래의 네트리스트의 성능에 영향을 미치지 않고, 시뮬레이션 시간에 루프들의 결함 거동(예를 들어, 발진 또는 상태-유지)을 검출하는 것만을 담당한다. 문제가 있는 루프 구조들이 식별될 때마다, 설계에 대한 적절한 디버깅 프로세스들을 가능하게 하기 위해, 문제에 관해 사용자에게 통지하기 위한 통지가 생성된다.
다양한 실시예들은 회로 에뮬레이션을 통한 회로 루프 검출을 위한 하드웨어 에뮬레이션 시스템에 관한 것이고, 시스템은 적어도 하나의 프로세서, 및 명령어들을 저장하는 적어도 하나의 메모리를 포함하고, 명령어들은, 적어도 하나의 프로세서에 의해, 시스템으로 하여금, 에뮬레이트되는 회로 내에서 하나 이상의 루프를 식별하게 하고, 에뮬레이트되는 회로의 적어도 일부의 비순환 에뮬레이션을 생성하게 하고 ― 비순환 에뮬레이션은 하나 이상의 루프 브레이커(loop breaker)에 의해 특성화됨 ―, 비순환 에뮬레이션을 특성화하는 루프 브레이커들의 양(n)에 적어도 부분적으로 기초하여, 하드웨어-기반 루프 검출기 회로의 루프 검출기 에뮬레이션을 생성하게 하고 ― 루프 검출기 에뮬레이션은 발진 검출기 또는 상태-유지 검출기 중 적어도 하나를 포함함 ―, 에뮬레이트되는 회로의 발진 상태 또는 상태-유지 상태 중 적어도 하나를 나타내는 출력을 생성하기 위해, 에뮬레이트되는 회로에 대한 복수의 입력 값들에 대해 루프 검출기 에뮬레이션을 실행하게 한다.
특정 실시예들에서, 에뮬레이트되는 회로 내에서 하나 이상의 루프를 식별하는 것은, 에뮬레이트되는 회로의 하나 이상의 강하게 연결된 컴포넌트를 식별하는 것을 포함하고, 에뮬레이트되는 회로의 적어도 일부의 비순환 에뮬레이션을 생성하는 것은, 하나 이상의 강하게 연결된 컴포넌트 중 적어도 하나의 비순환 에뮬레이션을 생성하는 것을 포함한다.
다양한 실시예들에서, 에뮬레이트되는 회로의 하나 이상의 강하게 연결된 컴포넌트 각각은 복수의 정점들, 및 복수의 정점들을 연결하는 복수의 에지들을 포함하고, 하나 이상의 강하게 연결된 컴포넌트 중 적어도 하나의 비순환 에뮬레이션을 생성하는 것은, 하나 이상의 강하게 연결된 컴포넌트 중 적어도 하나의 비순환 에뮬레이션을 생성하기 위해, 하나 이상의 에지를 하나 이상의 루프 브레이커로 대체하는 것을 포함한다.
루프 검출기는 루프 브레이커들이 상수들로 대체되어 비순환 회로가 생성된 원래의 SCC의 2n개의 카피(copy)들을 포함한다.
다양한 실시예들에서, 루프 검출기 에뮬레이션은,
Figure 112021047603300-pct00001
에 따라 구현되는 발진 검출기를 포함한다.
특정 실시예들에서, 루프 검출기 에뮬레이션은,
Figure 112021047603300-pct00002
에 따라 구현되는 상태-유지 검출기를 포함한다.
다양한 실시예들은 회로 에뮬레이션을 통한 회로 루프 검출을 위한 방법에 관한 것이고, 방법은, 에뮬레이트되는 회로 내에서 하나 이상의 루프를 식별하는 단계; 에뮬레이트되는 회로의 적어도 일부의 비순환 에뮬레이션을 생성하는 단계 ― 비순환 에뮬레이션은 하나 이상의 루프 브레이커에 의해 특성화됨 ―; 비순환 에뮬레이션을 특성화하는 루프 브레이커들의 양(n)에 적어도 부분적으로 기초하여, 하드웨어-기반 루프 검출기 회로의 루프 검출기 에뮬레이션을 생성하는 단계 ― 루프 검출기 에뮬레이션은 발진 검출기 또는 상태-유지 검출기 중 적어도 하나를 포함함 ―; 및 에뮬레이트되는 회로의 발진 상태 또는 상태-유지 상태 중 적어도 하나를 나타내는 출력을 생성하기 위해, 에뮬레이트되는 회로에 대한 복수의 입력 값들에 대해 루프 검출기 에뮬레이션을 실행하는 단계를 포함한다.
특정 실시예들에서, 에뮬레이트되는 회로 내에서 하나 이상의 루프를 식별하는 단계는, 에뮬레이트되는 회로의 하나 이상의 강하게 연결된 컴포넌트를 식별하는 단계를 포함하고, 에뮬레이트되는 회로의 적어도 일부의 비순환 에뮬레이션을 생성하는 단계는, 하나 이상의 강하게 연결된 컴포넌트 중 적어도 하나의 비순환 에뮬레이션을 생성하는 단계를 포함한다.
특정 실시예들에서, 에뮬레이트되는 회로의 하나 이상의 강하게 연결된 컴포넌트 각각은 복수의 정점들, 및 복수의 정점들을 연결하는 복수의 에지들을 포함하고, 하나 이상의 강하게 연결된 컴포넌트 중 적어도 하나의 비순환 에뮬레이션을 생성하는 단계는, 하나 이상의 강하게 연결된 컴포넌트 중 적어도 하나의 비순환 에뮬레이션을 생성하기 위해, 하나 이상의 에지를 하나 이상의 루프 브레이커로 대체하는 단계를 포함한다.
다양한 실시예들에서, 루프 검출기 에뮬레이션은 루프 브레이커들이 상수들로 대체되어 비순환 회로가 생성된 원래의 SCC의 2n개의 카피들을 포함한다.
다양한 실시예들에서, 루프 검출기 에뮬레이션은,
Figure 112021047603300-pct00003
에 따라 구현되는 발진 검출기를 포함한다.
특정 실시예들에서, 루프 검출기 에뮬레이션은,
Figure 112021047603300-pct00004
에 따라 구현되는 상태-유지 검출기를 포함한다.
특정 실시예들은 회로 설계, 테스트, 및/또는 제조를 위한 더 효율적인/유용한 전자 구조에 관한 것이고, 그 전자 구조는 본원에서 논의되는 바와 같은 기능들을 수행하도록 구성된 복수의 모듈들을 포함한다. 다른 실시예들은 더 효율적인/유용한 전자 회로에 관한 것이고, 그 전자 회로는 본원에서 논의되는 기능들을 수행하도록 구성된 복수의 모듈들을 포함한다. 더욱이, 특정 실시예들은 회로 설계, 테스트, 및/또는 제조를 위한 더 효율적인/유용한 방법에 관한 것이고, 그 방법은 본원에서 논의되는 기능들을 수행하도록 구성된 복수의 모듈들을 포함한다.
다양한 실시예들은 실행가능 명령어들을 포함하는 비-일시적 컴퓨터-판독가능 저장 매체에 관한 것이고, 그 실행가능 명령어들은, 프로세서에 의해 실행될 때, 프로세서로 하여금, 에뮬레이트되는 회로 내에서 하나 이상의 루프를 식별하게 하고, 에뮬레이트되는 회로의 적어도 일부의 비순환 에뮬레이션을 생성하게 하고 ― 비순환 에뮬레이션은 하나 이상의 루프 브레이커에 의해 특성화됨 ―, 비순환 에뮬레이션을 특성화하는 루프 브레이커들의 양(n)에 적어도 부분적으로 기초하여, 하드웨어-기반 루프 검출기 회로의 루프 검출기 에뮬레이션을 생성하게 하고 ― 루프 검출기 에뮬레이션은 발진 검출기 또는 상태-유지 검출기 중 적어도 하나를 포함함 ―, 에뮬레이트되는 회로의 발진 상태 또는 상태-유지 상태 중 적어도 하나를 나타내는 출력을 생성하기 위해, 에뮬레이트되는 회로에 대한 복수의 입력 값들에 대해 루프 검출기 에뮬레이션을 실행하게 하도록 구성된다.
특정 실시예들에 따르면, 에뮬레이트되는 회로 내에서 하나 이상의 루프를 식별하는 것은, 에뮬레이트되는 회로의 하나 이상의 강하게 연결된 컴포넌트를 식별하는 것을 포함하고, 에뮬레이트되는 회로의 적어도 일부의 비순환 에뮬레이션을 생성하는 것은, 하나 이상의 강하게 연결된 컴포넌트 중 적어도 하나의 비순환 에뮬레이션을 생성하는 것을 포함한다.
다양한 실시예들에서, 에뮬레이트되는 회로의 하나 이상의 강하게 연결된 컴포넌트 각각은 복수의 정점들, 및 복수의 정점들을 연결하는 복수의 에지들을 포함하고, 하나 이상의 강하게 연결된 컴포넌트 중 적어도 하나의 비순환 에뮬레이션을 생성하는 것은, 하나 이상의 강하게 연결된 컴포넌트 중 적어도 하나의 비순환 에뮬레이션을 생성하기 위해, 하나 이상의 에지를 하나 이상의 루프 브레이커로 대체하는 것을 포함한다.
루프 검출기는 루프 브레이커들이 상수들로 대체되어 비순환 회로가 생성된 원래의 SCC의 2n개의 카피들을 포함한다.
다양한 실시예들에서, 루프 검출기 에뮬레이션은,
Figure 112021047603300-pct00005
에 따라 구현되는 발진 검출기를 포함한다.
특정 실시예들에서, 루프 검출기 에뮬레이션은,
Figure 112021047603300-pct00006
에 따라 구현되는 상태-유지 검출기를 포함한다.
이 요약은, 상업적으로 사용될 수 있기 때문에, 임의의 특정 혁신, 실시예, 또는 예를 완전히 나타내려고 시도하지 않는다. 추가적으로, 이 요약은 혁신, 실시예, 또는 예의 필수 요소들을 나타내거나 또는 본 개시내용의 청구 대상의 범위를 제한하도록 의도되지 않는다.
본 개시내용 내에서 발견되는 혁신들, 실시예들, 및/또는 예들은 모든 것을 포함하는 것이 아니라, 청구 대상의 기본적인 중요성을 설명한다. 따라서, 이 요약의 하나의 용도는 추후에 제시되는 상세한 설명에 대한 서두이다.
다음의 상세한 설명, 도면들, 첨부된 추가적인 도면들, 및 첨부된 청구항들은 청구되는 발명들의 혁신들, 실시예들, 및/또는 예들의 성질 및 이점들을 나타낸다. 모든 도면들은 단지 예시의 목적들을 위해 청구되는 발명들의 혁신들, 실시예들, 및/또는 예들을 나타내고, 청구되는 발명들의 범위를 제한하지 않는다. 이러한 도면들은 반드시 실척대로 도시된 것이 아니고, 본 개시내용의 일부이다.
도면들에서, 유사한 컴포넌트들 또는 피처(feature)들은 (알파뉴메릭(alphanumeric) 심볼들, 예를 들어, 참조 번호들과 같은) 라벨들의 형태로 동일하거나 유사한 참조 부호들을 가질 수 있고, 유사하거나 동등한 기능성을 나타낼 수 있다. 추가로, 동일한 타입의 다양한 컴포넌트들은 참조 라벨 뒤에 대시(dash) 및 유사한 컴포넌트들을 구별하는 제2 라벨을 후속시킴으로써 구별될 수 있다. 본 명세서에서 제1 참조 라벨만이 사용되는 경우, 설명은, 제2 참조 라벨과 무관하게, 동일한 제1 참조 라벨을 갖는 유사한 컴포넌트들 중 임의의 컴포넌트에 적용될 수 있다. 도면들의 간단한 설명은 아래와 같다.
도 1은 내부에 다양한 루프들을 예시하는 예시적인 네트리스트를 도시한다.
도 2는 본원에서 논의되는 바와 같은 강하게-연결된 컴포넌트를 개략적으로 예시한다.
도 3은 예시적인 Verilog에 의해 정의된 회로의 개략도를 예시한다.
도 4는 도 3에 예시된 회로에 대한 루프-분석 회로의 구현을 예시한다.
도 5는 다른 예시적인 Verilog에 의해 정의된 회로의 개략도를 예시한다.
도 6은 도 5에 예시된 회로에 대한 루프-분석 회로의 구현을 예시한다.
도 7은 예시적인 Verilog에 의해 정의된 회로의 개략도를 예시한다.
도 8은 도 7에 예시된 회로에 대한 루프-분석 회로의 구현을 예시한다.
도 9는 다양한 실시예들에 따른, 2개의 루프-브레이커들을 포함하는 루프-분석 회로의 개략도를 예시한다.
도 10은 본 개시내용의 실시예에 따른, 집적 회로의 설계 및 제작에서의 다양한 동작들의 흐름도이다.
도 11a, 도 11b, 및 도 11c는 본 기술의 실시예들은 물론 본 기술의 회로 설계 및 회로 실시예들과 함께 사용하는 데 적합한 컴퓨터 시스템의 단순화된 블록도들을 도시한다.
도 12는 에뮬레이션 시스템의 블록도이다.
그러한 다양한 도면들에서, 참조 부호들은 허용되는 엔지니어링 관행에 따라 생략될 수 있지만, 관련 기술분야의 통상의 기술자는 예시된 컴포넌트들이 전체 예시 및 그러한 다양한 도면들을 설명하는 첨부 개시내용과 관련하여 볼 때 쉽게 이해된다는 것을 이해할 것이다.
도면들 및 다음의 상세한 설명은 단지 예시로서 혁신들, 실시예들, 및/또는 예들을 나타내며, 다양한 피처들, 구조들, 또는 특성들은 본 개시내용을 간소화하기 위해 단일 실시예에서 함께 설명된다. 이러한 예시적인 혁신들, 실시예들, 및/또는 예들에 의해 개시되는 요소들, 프로세스들, 머신들, 시스템들, 제조물들, 또는 조성물들 중 임의의 것의 변형들은 쉽게 인식될 것이고, 청구되는 것의 원리들로부터 벗어나지 않으면서 상업적으로 사용될 수 있다. 도면들 및 상세한 설명은 또한, 본원에서 설명되는 예시적인 실시예들의 서브세트의 이점들 및 개선들을 암시적으로 또는 명시적으로 나타낼 수 있다.
도면들 및 상세한 설명에서, 예시적인 혁신들, 실시예들, 및/또는 예들 중 하나 이상을 가능하게 하기 위해, 다수의 특정 세부사항들이 설명될 수 있다. 다음의 상세한 설명에서 예시적인 혁신들, 실시예들, 및/또는 예들의 제시를 모호하게 하지 않기 위해, 관련 기술분야에 공지된 일부 프로세싱 단계들 또는 동작들은 제시 및 예시 목적들을 위해 함께 조합될 수 있고, 상세히 설명되지 않을 수 있다. 그러나, 관련 기술분야의 통상의 기술자는 이들 예시적인 혁신들, 실시예들, 및/또는 예들이 이들 특정 세부사항들 없이 또는 이들의 등가물들과 함께 상업적으로 사용될 수 있다는 것을 인식할 것이다. 다른 경우들에서, 널리-공지된 프로세스들 및 디바이스들은 이들 예시적인 혁신들, 실시예들, 및/또는 예들의 양태들을 불필요하게 모호하게 하지 않기 위해 상세히 설명되지 않는다. 다른 경우들에서, 관련 기술분야에 공지된 일부 프로세싱 단계들 또는 동작들은 전혀 설명되지 않을 수 있다. 대신에, 다음의 설명은 다양한 예시적인 혁신들, 실시예들, 및/또는 예들의 특유의 피처들 또는 요소들에 초점을 맞춘다. 게다가, 이 설명이 구조의 일부 컴포넌트들을 단수형으로 지칭할 수 있지만, 하나 초과의 컴포넌트가 도면들 전반에 걸쳐 도시될 수 있고, 유사한 컴포넌트들이 유사한 번호들로 표시된다.
정의들
용어의 다음의 논의는 다양한 실시예들의 후속 설명에서의 추가적인 맥락을 위해 제공된다. 이들 용어들의 논의는 도 1의 예시를 참조하여 제공되며, 도 1은 정점들의 세트 V = {A, B, C, D, E, F, G, H, I}를 갖는 그래프를 예시한다.
도 1에 도시된 바와 같이, 유향 에지들의 세트는 정점들을 연결하는 두꺼운 화살표들로 예시된다. 소스 정점으로부터 타겟 정점까지의 에지가 ST(소스-타겟(source-to-target))로서 표시되는 경우, 도 1에 예시된 그래프 내의 에지들의 세트는 E = {AC, BE, EC, CF, CD, DC, DE, FD, FG, FH, GI, HI}이다.
따라서, 도 1의 그래프 G = {V, E}는 정점들 V와 에지들 E의 커플 (V, E)인 유향 그래프(directed graph)이다. 에지들의 세트 E는 V x V의 서브세트이다. 우리는, (v1, v2)가 에지인 경우 그리고 그 경우에만, 정점 v2가 정점 v1의 후속자(successor)라고 말한다. 우리는, v_0 = v1 및 v_{n+1} = v2가 되도록 하는 에지들의 시퀀스 (v_i, v_{i+1})(0 <= i <= n)가 존재하는 경우 그리고 그 경우에만, v2가 v1로부터 도달가능하다고 말한다.
G의 서브그래프는 그래프 G' = (V', E')이고, 그에 따라, V'는 V에 포함되고, E'는 (V' x V') 및 E에 포함된다. 도 1의 예시된 실시예에서, G의 서브그래프 S는 예시된 정점들 및 에지들의 일부를 포함한다. 따라서, S = {{F, G, I, H}, {FG, FH, GI, HI}}는 G의 서브그래프이다.
서브그래프 G' = (V', E')의 입력들(특정 실시예들에서 Y로서 표시됨)은 모두, E'에 있지 않은 V'의 진입 에지(ingoing edge)들이다. 따라서, 위에서 논의된 서브그래프 S(즉, S = {{F, G, I, H}, {FG, FH, GI, HI}})는 단일 입력 Y = CF를 갖는다.
유향 그래프 내의 루프는 v0 = v_{n+ 1}이 되도록 하는 에지들의 시퀀스 (v_i, v_{i+1})(0 <= i <= n)이다. 그래프가 어떠한 루프도 포함하지 않는 경우 그리고 그 경우에만 그래프는 비순환형이다. 도 1의 예시된 실시예에서, 그래프 G는 4개의 루프를 포함한다:
● 루프 1은 {C, F, D, C}(평행선들로 예시됨)를 포함한다.
● 루프 2는 {C, D, E, C}(근접 파선(close dashed line)들로 예시됨)를 포함한다.
● 루프 3은 {C, D, C}(이격 파선(spaced dash line)들로 예시됨)를 포함한다.
● 루프 4는 {C, F, D, E, C}(점선들로 예시됨)를 포함한다.
유향 그래프 G 내의 강하게 연결된 컴포넌트 C는 G의 서브그래프이고, 그에 따라, C의 임의의 정점이 C의 임의의 다른 정점으로부터 도달가능하다. 본원에서 논의되는 바와 같이, "강하게 연결된 컴포넌트"는 "SCC"로서 표시된다. 도 1의 예시된 실시예에서, 그래프 G는 단지 1개의 SCC, 즉 S = {C, F, D, E}를 포함한다. 여기에 도시된 바와 같이, S 내의 모든 각각의 노드는 S 내의 임의의 다른 노드로부터 도달될 수 있다. 또한, SCC는 위에서 논의된 모든 가능한 루프들을 포함한다.
그래프 내의 임의의 루프는 반드시 SCC 내에 포함된다는 것에 유의한다.
강하게 연결된 컴포넌트 C = (V', E')가 주어지면, 우리는 E' 내에 포함된 에지로서 루프 브레이커를 정의할 수 있고, 그에 따라, 그 에지를 제거하는 것은 C 내의 루프를 연결해제한다. 최소 수의 루프 브레이커를 발견하는 것은 강하게 연결된 컴포넌트가 더 이상 루프를 포함하지 않게 되도록 강하게 연결된 컴포넌트를 비순환형이 되게 하는 데 필요한 최소 수의 루프 브레이커를 결정하는 것을 포함할 수 있다. 강하게 연결된 컴포넌트 내에서, 우리는 E'에 포함된 세트 BK를 정의할 수 있고, 그에 따라, BK의 정점들 사이의 각각의 에지들을 연결해제하는 것(예를 들어, 정점들 사이의 각각의 에지를 대응하는 루프브레이커로 대체함)은 C가 비순환 그래프가 되게 한다. 세트 BK는 본원에서 브레이크포인트(breakpoint)들의 세트로서 지칭된다. 명백한(trivial) 세트는 BK = E'이다. 브레이크포인트들의 세트를 발견하는 것은, 예를 들어, 단순한 O(|C|) 그리디 알고리즘(greedy algorithm)에 의해 달성될 수 있다.
도 1의 예시된 실시예에서, 에지 DC의 제거는 루프 1 및 루프 3을 끊는다. 에지 EC의 제거는 루프 2 및 루프 4를 끊는다. 에지들 DC 및 EC 둘 모두의 제거는 그래프 G를 비순환형이 되게 하는데, 이는 G 내에 더 이상 어떠한 루프도 없게 되기 때문이다. 따라서, 그래프 G는 2개의 루프 브레이커를 포함하는 루프 브레이커들의 세트 BK를 요구한다.
우리는 네트리스트를 단일-출력 게이트들로 이루어진 등가의 네트리스트로 감소시킬 수 있다. 이어서, 네트리스트는 정점들이 게이트들인 유향 그래프 (V, E)로서 모델링될 수 있고, 그에 따라, 게이트 v1의 출력 포트를 게이트 v2의 입력 포트에 연결하는 네트리스트의 와이어가 존재하는 경우 그리고 그 경우에만 에지 (v1, v2)가 존재한다.
B = {0, 1}을 불 값들의 세트로서 정의하기로 하자. n개의 변수를 갖는 불 함수는 Bn으로부터 B로의 함수이다. 우리는 불 변수들의 Y 및 X 벡터들, 예를 들어, Y = {y_1, ..., y_m} 및 X = {x_1, ..., x_n}에 주목할 것이다. f를 불 함수라고 하자. 우리는 f의 부정(negation)으로서 ~f를 표시한다.
f를 불 함수라고 하자. 우리는 델타 함수 δ를 다음과 같이 정의한다:
Figure 112021047603300-pct00007
g(Y, X)를 Bm x Bn으로부터 B로의 불 함수라고 하기로 하며, 여기서, Y는 Bm에 속하고, X는 Bn에 속한다. Bn 내의 S의 경우, 우리는 gS(Y) = g(Y, S)로서 정의되는 Bm으로부터 B로의 불 함수를 gS로 기재한다. 우리는 gS를 S에 관한 g의 코팩터(cofactor)로 지칭한다. 우리는 Bn에 속하는 n-튜플 S의 k-번째 불 값을 S[k](1 <= k <= n)로 표시한다.
판정 절차들
다양한 실시예들은 칩 설계를 특성화하는 그래프들 내에 포함된 서브그래프들의 하나 이상의 특성을 식별하도록 구성된 하드웨어 에뮬레이션 시스템들 및 방법들에 관한 것이다. 본원에서 논의되는 바와 같이, 다양한 실시예들은 에뮬레이트되는 하드웨어 시스템 내에서 SCC들을 비순환 서브그래프들로서 에뮬레이트함으로써 추가적인 하드웨어를 에뮬레이트하며, 여기서, SCC들의 비순환 서브그래프 에뮬레이션들의 브레이크포인트들 대신에 상수들이 대체된다. 따라서, 다양한 실시예들은, 예를 들어, 초기 칩 설계(예를 들어, 네트리스트)가 생성된 후에(예를 들어, 칩 설계와 연관된 Verilog 코드의 생성 후에), 칩 설계 프로세스(예를 들어, 집적 회로 설계 프로세스)와 함께 및/또는 이와 연관하여 실행되도록 구성된다.
(예를 들어, EDA 소프트웨어 툴에 의해 적어도 부분적으로 생성되는) 칩 설계를 설명하는 주어진 네트리스트에 대해, 그 네트리스트에 포함된 하나 이상의 루프는 그 루프가 하나 이상의 문제가 있는 특성을 갖는지를 결정하기 위해 분석될 수 있다. 따라서, 칩 설계를 설명하는 네트리스트 내에서, 다양한 실시예들은 네트리스트 내에 포함된 하나 이상의 SCC를 식별하도록 구성된다(예를 들어, 칩 설계를 구현하는 전체 그래프의 서브그래프들로서 식별됨). 본원에서 논의되는 바와 같이, SCC는 서브그래프의 모든 정점들이 모든 다른 정점들로부터 도달가능한 서브그래프를 포함할 수 있다. 따라서, 그래프 내의 하나 이상의 SCC를 식별하는 것은, 어느 정점들이 다른 정점들로부터 도달가능한지를 결정하고, 그룹(서브그래프) 내의 모든 정점들이 모든 다른 정점들로부터 도달가능한 정점들의 그룹들을 식별함으로써 자동으로 수행될 수 있다.
각각의 SCC에 대해, C를 SCC라고 하자. 본원에서 논의되는 실시예들은 C의 입력들을 컴퓨팅하며, 입력들은 Y로서 지정된다. 더욱이, 실시예들은, 제거되는 경우, SCC를 비순환 서브그래프가 되게 할 서브그래프 내의 에지들로서 식별되는 브레이크포인트들 X의 세트를 (예를 들어, 그리디 알고리즘들을 통해) 계산한다. 이들 브레이크포인트들은 루프 브레이커들로 대체될 수 있으며 ― 제거된 에지들은 에지와 이전에 연결되었던 정점들을 연결해제한다. 특정 실시예들에서, 하드웨어 에뮬레이션 시스템은, 그래프가 발진 루프들 또는 상태-유지 루프들을 갖는 임의의 SCC들을 포함하는지의 결정을 위해 가장 적은 수의 루프 브레이커들이 요구되도록, 전체 그래프를 비순환형이 되게 하는 가능한 가장 적은 브레이크포인트들 X를 식별하도록 구성될 수 있다. X = {x_1, ..., X_n}이라고 하자. 브레이크포인트 x_k(1 <= k <= n)가 주어지면, 우리는 에지 x_k에 대응하는 게이트의 출력에서 정의되는 불 함수를 g_k(Y, X)로 표시한다.
도 9는 예시적인 SCC(그의 루프 브레이커들로 표현됨)를 예시하며 ― 도 9의 예시된 실시예는 예시적인 SCC에 대해 2개의 루프 브레이커들을 포함하고, 여기서, G(Y, X) = [g_1(Y, X), g_2(Y, X)]이다.
함수 g_k(Y, X)는 그의 고정점 방정식(fixpoint equation)이 k = [1, n] 내의 모든 k에 대해 해를 갖는 경우 그리고 그 경우에만 잘 정의된다(즉, 비-발진). 다시 말하면, 모든 Y 값들에 대해, x_k = g_k(Y, X)를 만족시키는 X = {x_1, ..., X_n} 값이 존재해야만 한다.
함수 g_k(Y, X)는 잘 정의되고, 그의 고정점 방정식이 고유의 해를 갖는 경우 그리고 그 경우에만 상태-유지가 아니다.
하드웨어 기기 절차
네트리스트가 주어지면, 위에서 논의된 판정 절차들은 추가적인 하드웨어를 에뮬레이트함으로써 에뮬레이션 시스템에 의해 구현될 수 있다. 이러한 추가적인 하드웨어는 SCC들을 비순환 서브그래프들(본원에서 논의되는 바와 같은 루프 브레이커들을 포함함)로서 에뮬레이트함과 함께 그 SCC들의 브레이크포인트들 대신에 상수들을 대체하는 것으로서 구현된다. 따라서, 시스템들(예를 들어, EDA 소프트웨어 툴)은, SCC들의 하나 이상의 특성의 결정을 가능하게 하기 위해, 식별된 SCC들(및 SCC들의 비순환 변형들)에 적어도 부분적으로 기초하여, 적절한 하드웨어 에뮬레이션들을 자동으로 생성하도록 구성될 수 있다. 더욱이, 추가적인 하드웨어는 아래에서 논의되는 바와 같이 하나 이상의 루프 결정 회로를 추가적으로 포함할 수 있다. 예를 들어, 루프 결정 회로들은 하나 이상의 카피(예를 들어, 2n개의 카피, 여기서, n은 SCC 내의 루프 브레이커들(또는 브레이크포인트들)의 양과 동일함)를 포함할 수 있다. 특정 실시예들에서, 카피들은 (예를 들어, SCC의 원래의 비순환 서브그래프 표현의 동일한 기능성을 갖는) SCC의 원래의 비순환 서브그래프 표현의 단순화된 표현들로서 구현될 수 있다.
1. 먼저, 제공된 네트리스트 그래프의 복수의(예를 들어, 모든) SCC들이 위에서 논의된 바와 같이 식별된다. 임의의 루프가 고유 SCC에 포함되기 때문에, 각각의 SCC는 독립적으로 프로세싱될 수 있고, 그렇게 되면서, 본원에서 논의되는 바와 같이 루프 결정들에 의해 설계의 모든 루프들이 고려되는 것이 보장될 수 있다.
2. C가 SCC라고 하자. 우리는 그의 입력들 Y의 세트 및 브레이크포인트들 X의 세트를 컴퓨팅한다. X = {x1, ... xn}이라고 하자. xk(1 <= k <= n)에 대해, gk(Y, X)를 루프 브레이커 xk에서 구현된 불 함수라고 하자.
3. 특정 실시예들에서, 시스템은, SCC가 발진 루프를 포함하는지를 결정하도록 구성된, 다음의 함수 OSC(Y)에 대한 에뮬레이트된 하드웨어 회로를 포함하는 루프 검출기를 생성한다. 우리는 이를 발진 검출기를 작동시킨다고 지칭한다. OSC(Y) = 1일 때마다, SCC는 그 Y에 대해 고정점 해를 허용하지 않으며, 이는 그 SCC가 발진 루프를 포함한다는 것을 의미한다.
Figure 112021047603300-pct00008
4. 특정 실시예들에서, 시스템은, SCC가 상태-유지 루프를 포함하는지 여부를 결정하도록 구성된, 다음의 함수 STH(Y)에 대한 에뮬레이트된 하드웨어 회로를 포함하는 루프 검출기를 생성한다. 루프 검출기가 발진 검출기와 상태-유지 검출기 둘 모두를 포함할 수 있다는 것이 이해되어야 한다. 다른 실시예들에서, 루프 검출기는 발진 검출기 또는 상태-유지 검출기 중 하나를 포함할 수 있다. OSC(Y) = 0 및 STH(Y) = 1일 때마다, SCC는 고정점 해를 허용하지만, 이는 고유하지 않다. 이는 그 SCC가 상태-유지 루프를 포함한다는 것을 의미한다. 우리는 이를 상태-유지 검출기를 작동시킨다고 지칭한다.
Figure 112021047603300-pct00009
Figure 112021047603300-pct00010
특정 실시예들에서, 발진 검출기 및 상태-유지 검출기는 디버그 프로세스를 (예를 들어, 자동으로) 개시하도록 동작할 수 있는 값을 생성한다. 다른 예들로서, 생성된 값은 다양한 프로세스들 중 임의의 프로세스에 의해 활용될 수 있다. 이러한 검출기들은, 시뮬레이션 그 자체를 늦추지 않으면서, 설계가 시뮬레이트됨과 동시에 평가된다는 것에 유의한다. 이는 검출기들이 상수 값들로 강제된 내부 브레이크포인트들을 갖는 SCC들의 카피들로 이루어지므로, 검출기들이 설계 그 자체보다 더 느릴 수 없기 때문이다.
예를 들어, 발진 검출기 또는 상태-유지 검출기 중 적어도 하나를 포함하는 루프 검출기의 하드웨어 에뮬레이션은 경고(예를 들어, 에뮬레이션 모듈의 사용자에게 제공될 팝업 경고, (예를 들어, 칩 설계의 에뮬레이션을 구현하는) 그래프의 에뮬레이션과 연관된 사용자에게 송신되는 통지 등)를 생성하도록 추가로 구성될 수 있다. 이러한 실시예들에서, 사용자는 수신된 통지에 기초하여 디버그 프로세스를 개시하도록 선택할 수 있다.
예 1: 발진 SCC를 갖는 설계
도 3은 다음의 Verilog에 의해 설명되는 회로의 개략도를 예시한다:
Figure 112021047603300-pct00011
위에서 표시된 회로에 대해, 단지 하나의 루프 브레이커 x1만이 존재하고, 그에 따라 n = 1이다. SCC가 발진하고 있는지를 결정하기 위해 위의 모델들을 실행하는 것은 다음을 산출한다:
Figure 112021047603300-pct00012
결과적인 해는 y = 1(즉, OSC(y) = 1)일 때 회로에 발진이 존재하고, y = 0(OSC(y) = 0)일 때 해에 고정된 점이 존재한다는 것을 입증한다. 검증을 위해, y = 0일 때, 출력 gk는 0에서 안정적이다. y = 1일 때, 개략도는 자체-루프형 인버터로 단순화되고, gk의 값은 계속 안정화되지 않으면서 0과 1 사이에서 발진한다.
도 4는 OSC(y) 및 STH(y)를 평가하는 하드웨어 구현의 개략도를 예시한다. 검증을 위해, "is_oscillating"이 "y"에 할당되게 하는 상수들을 전파하며, 이는 위에서 제공된 방정식 OSC(y)의 결과들과 동일하다. 적어도 하나의 입력에 대해 SCC가 발진한다고 결정할 시에, 에뮬레이션 모듈은 사용자에게 제공될 경고를 생성하도록 구성될 수 있다.
예 2: 비-발진 상태-유지 SCC를 갖는 설계
도 5는 다음의 Verilog에 의해 설명되는 회로의 개략도를 예시한다.
Figure 112021047603300-pct00013
SCC가 발진하고 있는지를 결정하기 위해 위의 모델들을 실행하는 것은 다음을 산출한다:
Figure 112021047603300-pct00014
따라서, 입력과 상관없이, OSC(y) = 0이고, 그에 따라, 예시된 회로에서 발진이 발생할 수 없다.
SCC가 상태-유지하고 있는지를 결정하기 위해 위의 모델을 실행하는 것은 다음을 산출한다:
Figure 112021047603300-pct00015
따라서, 회로는 y = 1일 때 상태 유지하고 있으며 ― 이러한 조건 하에서, xk는 0 또는 1에 할당될 수 있고, 값들 둘 모두는 유효 하드웨어 상태들이다.
도 6은 OSC(y) 및 STH(y)를 평가하는 하드웨어 구현의 개략도를 예시한다. 검증을 위해, "is_oscillating"이 0이 되고 "is_state_holding"이 "y"에 할당되는 상수들을 전파하며, 이는 위에서 논의된 방정식들 OSC(y) 및 STH(y)의 결과들과 동일하다.
예 3: 안정적인 비-상태 유지 SCC를 갖는 설계
도 7은 다음의 Verilog에 의해 설명되는 회로의 개략도를 예시한다:
Figure 112021047603300-pct00016
SCC가 발진하고 있는지를 결정하기 위해 위의 모델들을 실행하는 것은 다음을 산출한다:
Figure 112021047603300-pct00017
따라서, 입력과 상관없이, OSC(y) = 0이며, 이는 예시된 회로에서 발진이 발생할 수 없다는 것을 나타낸다.
SCC가 상태-유지하고 있는지를 결정하기 위해 위의 모델들을 실행하는 것은 다음을 산출한다:
Figure 112021047603300-pct00018
따라서, 입력과 상관없이, STH(y) = 0이며, 이는 예시된 회로가 결코 상태 유지가 되지 않는다는 것을 나타낸다.
도 8은 OSC(y) 및 STH(y)를 평가하는 하드웨어 구현의 개략도를 예시한다. 검증을 위해, 신호들 "is_oscillating"과 "is_state_holding" 둘 모두가 0이 되는 상수들을 전파하며, 이는 위에서 논의된 방정식들 OSC(y) 및 STH(y)의 결과들과 일치한다. 결과의 상관 관계는, 회로가 비-발진 및 비-상태 유지이기 때문에, 회로가 등가의 루프-프리(loop-free)(비순환) 회로로 대체될 수 있다는 것이다. 실제로, 회로는 y로부터 gk까지 단일 버퍼로서 거동한다.
예 4: 2개의 루프 브레이커를 포함하는 발진 검출
도 9는 2개의 루프 브레이커가 이들의 비순환 변형을 형성하도록 요구하는 회로에 대해 OSC(y) 및 STH(y)를 평가하는 하드웨어 구현(에뮬레이션으로서 구현됨)의 개략도를 예시한다. 예시된 실시예에서, 에뮬레이트되는 하드웨어 회로는, 2개의 포함된 루프 브레이커들을 고러하여, 적용가능한 회로 내에 구현된 SCC들의 22개의 비순환 재현(reproduction)들을 포함한다. 각각의 루프 브레이커에 대해, 하드웨어 구현은, 발진 또는 상태-유지 조건이 존재하는지 여부를 결정하기 위해, SCC에 대한 각각의 가능한 입력 값을 고려한다. 결과로서, 발진 검출은 다음을 산출한다:
Figure 112021047603300-pct00019
위에서 논의된 바와 같이, 예시된 하드웨어 에뮬레이션의 출력이 루프 결정 회로를 통해 분석된 주어진 SCC가 발진 SCC 또는 상태-유지 SCC인 것을 나타낸다고 결정할 시, 에뮬레이션 모듈은, 특정 SCC가 발진 SCC 또는 상태-유지 SCC를 구현한다는 것을 나타내는, 에뮬레이션 모듈의 사용자에 대한 통지를 생성하도록 구성될 수 있다.
도 9에 예시된 2 루프 브레이커 하드웨어 구현의 표현은 특정 실시예들의 다양한 기능성을 예시하기 위해 제공된 것이고, 특정 실시예들에서, 기능성을 제공하는 단순화된 회로 설계를 제공하기 위해, 정확한 수 및/또는 타입의 게이트들이 감소될 수 있고/있거나 다른 방식으로 수정될 수 있다는 것이 이해되어야 한다. 임의의 수의 루프 브레이커에 대한 다른 하드웨어 에뮬레이션들에 대해 유사한 로직이 활용될 수 있다.
상세한 설명 ― 기술 지원
일반적인 컴퓨터 설명
도 11a, 도 11b, 및 도 11c는 본 기술의 실시예들은 물론 본 기술의 회로 설계 및 회로 실시예들과 함께 사용하는 데 적합한 컴퓨터 시스템의 단순화된 블록도들이다.
도 11a에서, 컴퓨터 시스템(3110)은 전형적으로, 버스 서브시스템(3112)을 통해 다수의 주변 디바이스들과 통신하는 적어도 하나의 컴퓨터 또는 프로세서(3114)를 포함한다. 전형적으로, 컴퓨터는 마이크로프로세서, 그래픽 프로세싱 유닛, 또는 디지털 신호 프로세서, 및 이들의 전자 프로세싱 등가물들, 이를테면 주문형 집적 회로(ASIC) 또는 필드 프로그램가능 게이트 어레이(FPGA) 중 임의의 것을 포함할 수 있거나, 또는 그 임의의 것이 프로세서가 될 수 있다. '프로세서' 및 '컴퓨터'라는 용어들은 아래에서 추가로 정의된다. 이들 주변 디바이스들은, 메모리 서브시스템(3126) 및 파일 저장 서브시스템(3128)을 포함하는 저장 서브시스템(3124), 사용자 인터페이스 입력 디바이스들(3122), 사용자 인터페이스 출력 디바이스들(3120), 및 네트워크 인터페이스 서브시스템(3116)을 포함할 수 있다. 입력 및 출력 디바이스들은 컴퓨터 시스템(3110)과의 사용자 상호작용을 가능하게 한다.
컴퓨터 시스템은 서버 컴퓨터, 클라이언트 컴퓨터, 워크스테이션, 메인프레임, 개인용 컴퓨터(PC), 태블릿 PC, 셋-톱 박스(STB), 개인 휴대 정보 단말기(PDA), 셀룰러 전화기, 스마트폰, 웹 어플라이언스, 랙-장착 "블레이드", 키오스크, 텔레비전, 게임 스테이션, 네트워크 라우터, 스위치 또는 브리지, 또는 임의의 데이터 프로세싱 머신일 수 있으며, 임의의 데이터 프로세싱 머신은 그 머신에 의해 취해질 액션들을 특정하는 명령어들(124)을 (순차적으로 또는 다른 방식으로) 실행할 수 있다.
컴퓨터 시스템은 전형적으로, Microsoft의 Windows, Sun Microsystems의 Solaris, Apple Computer의 MacOS, Linux, 또는 Unix와 같은 운영 시스템을 포함한다. 컴퓨터 시스템은 또한, 전형적으로, 기본 입/출력 시스템(BIOS) 및 프로세서 펌웨어를 포함할 수 있다. 운영 시스템, BIOS, 및 펌웨어는, 프로세서에 의해, 프로세서에 연결된 인터페이스들 및 서브시스템들을 제어하기 위해 사용된다. 이들 운영 시스템들과 호환가능한 전형적인 프로세서들은 Intel로부터의 Pentium 및 Itanium, Advanced Micro Devices로부터의 Opteron 및 Athlon, 및 ARM Holdings로부터의 ARM 프로세서를 포함한다.
청구되는 발명들의 혁신들, 실시예들, 및/또는 예들은 종래의 컴퓨터 애플리케이션들로 제한되지 않을 뿐만 아니라 이들을 실행하는 프로그램가능 장치로도 제한되지 않는다. 예를 들어, 청구되는 것의 혁신들, 실시예들, 및/또는 예들은 광학 컴퓨터, 퀀텀 컴퓨터, 아날로그 컴퓨터 등을 포함할 수 있다. 컴퓨터 시스템은 멀티-프로세서 또는 멀티-코어 시스템일 수 있고, 분산 또는 원격 시스템을 사용할 수 있거나, 또는 분산 또는 원격 시스템으로 구현될 수 있다. 본원에서 '프로세서'라는 용어는, 가장 넓은 의미로, 그래픽 프로세싱 유닛들, 디지털 신호 프로세서들, 디지털 프로세서들, 및 이들 디바이스들의 조합들을 포함하는, 단일 프로세서 및 멀티-코어 또는 멀티-프로세서 어레이들을 포함하는 것으로 사용된다. 추가로, 단일 컴퓨터 시스템 또는 단일 머신만이 예시될 수 있지만, 그러한 용어들의 단수 형태의 사용은 또한, 본원에서 논의되는 명령어들의 세트들 중 임의의 하나 이상을 수행하기 위해 명령어들(124)을 개별적으로 또는 공동으로 실행하는 컴퓨터 시스템들 또는 머신들의 임의의 집합을 나타낼 것이다. 컴퓨터들 및 네트워크들의 끊임없이 변화하는 성질로 인해, 도 31a에 도시된 컴퓨터 시스템(3110)의 설명은 바람직한 실시예들을 예시하는 목적들을 위해 일 예로서만 의도된다. 컴퓨터 시스템(3110)의 다수의 다른 구성들이 도 31a에 도시된 컴퓨터 시스템보다 더 많거나 또는 더 적은 컴포넌트들을 갖는 것이 가능하다.
네트워크 인터페이스 서브시스템(3116)은, 통신 네트워크(3118)에 대한 인터페이스를 포함하는, 외부 네트워크들에 대한 인터페이스를 제공하고, 통신 네트워크(3118)를 통해 다른 컴퓨터 시스템들 또는 머신들 내의 대응하는 인터페이스 디바이스들에 커플링된다. 통신 네트워크(3118)는 다수의 상호연결된 컴퓨터 시스템들, 머신들, 및 통신 링크들을 포함할 수 있다. 이들 통신 링크들은 유선 링크들, 광학 링크들, 무선 링크들, 또는 정보의 통신을 위한 임의의 다른 디바이스들일 수 있다. 통신 네트워크(3118)는 임의의 적합한 컴퓨터 네트워크, 예를 들어, 인터넷과 같은 광역 네트워크, 및/또는 이더넷과 같은 로컬 영역 네트워크일 수 있다. 통신 네트워크는 유선 및/또는 무선일 수 있고, 통신 네트워크는 가상 사설 네트워크와 함께 이용가능한 것과 같은 암호화 및 복호화 방법들을 사용할 수 있다. 통신 네트워크는 다른 시스템들로부터 데이터를 수신하고 다른 시스템들로 데이터를 송신할 수 있는 하나 이상의 통신 인터페이스를 사용한다. 통신 인터페이스들의 실시예들은 전형적으로, 이더넷 카드, 모뎀(예를 들어, 전화기, 위성, 케이블, 또는 ISDN), (비동기) 디지털 가입자 회선(DSL) 유닛, 파이어와이어 인터페이스, 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) 시스템들을 사용하여 파일 저장 시스템들과 직접적으로 통신할 수 있다.
도 11b는 파일 저장 서브시스템(3128) 및/또는 네트워크 인터페이스 서브시스템(3116)과 연관된 비-일시적 컴퓨터 판독가능 데이터 및 정보 저장 매체와 같은 메모리(3140)를 도시하고, 회로 설계를 특정하는 데이터 구조를 포함할 수 있다. 메모리(3140)는 하드 디스크, 플로피 디스크, CD-ROM, 광학 매체, 탈착식 매체 카트리지, 또는 휘발성 또는 비-휘발성 형태로 컴퓨터 판독가능 데이터를 저장하는 다른 매체일 수 있다. 이러한 메모리로부터 컴퓨터로 판독되는 소프트웨어는 선택된 시간 인스턴스에 유형의 형태로부터, 매체(이를테면, 전기 펄스로서 네트워크, 커넥터, 와이어 또는 트레이스, 또는 적외선 광보다 더 긴 전자기 스펙트럼 내의 파장들을 갖는 전자기 복사로서 대기 또는 공간과 같은 매체)를 통해 전파되는 송신 신호로 변환될 수 있다.
도 11c는, 예를 들어 셀 라이브러리로부터 선택된 하나 이상의 셀을 포함하는, 설명되는 기술로 생성된 집적 회로(3190)를 나타낸다.
상세한 설명 ― 기술 지원
하드웨어/소프트웨어 등가성
본원에서 설명되는 혁신들, 실시예들, 및/또는 예들 중 일부는 프로세서를 포함하고/하거나 사용한다. 본원에서 사용되는 바와 같이, '프로세서'라는 용어는, 전형적으로 시퀀스 변환들('동작들'로 또한 지칭됨)을 사용하여 데이터 및 정보를 물리적으로 변환하는 유형의 데이터 및 정보 프로세싱 디바이스를 나타낸다. 데이터 및 정보는 프로세서에 의해 저장, 액세스, 전송, 결합, 비교, 또는 다른 방식으로 조작될 수 있는 전기, 자기, 광학, 또는 음향 신호에 의해 물리적으로 표현될 수 있다. "프로세서"라는 용어는, 그래픽 프로세싱 유닛들, 디지털 신호 프로세서들, 디지털 프로세서들, 및 이들 요소들의 조합들을 포함하는, 단일 프로세서 및 멀티-코어 시스템들 또는 멀티-프로세서 어레이들을 나타낼 수 있다.
프로세서는, 예를 들어, 디지털 로직 회로부(예를 들어, 이진 로직) 또는 아날로그(예를 들어, 연산 증폭기)를 포함하는 전자식일 수 있다. 프로세서는 또한, 예를 들어, 광학 신호 프로세싱, DNA 변환들, 또는 양자 역학, 또는 광전자 프로세서와 같은 기술들의 조합에 기초한 프로세서들에서 보이는 바와 같이 비-전자식일 수 있다. 이진 형태로 구조화된 데이터 및 정보에 대해, AND, OR, 및 NOT 논리 연산들(및 NAND, NOR, 및 XOR 연산들과 같은 이들의 파생물들)을 사용하여 데이터 및 정보를 변환할 수 있는 임의의 프로세서는 불 로직의 임의의 함수를 사용하여 데이터 및 정보를 변환할 수 있다. 아날로그 신경망 프로세서와 같은 프로세서가 또한, 데이터 및 정보를 비-디지털적으로 변환할 수 있다. 이들 프로세서들 중 임의의 프로세서가, 사람 뇌의 생체전기 구조와 동등한 임의의 방식 또는 형태로, 데이터 및 정보를 프로세싱, 저장, 및 검색하고 있다는 과학적 증거는 없다.
하나 이상의 프로세서는 또한, 'SaaS(software as a service)'로서 또는 '클라우드 컴퓨팅' 환경에서 관련 동작들의 수행을 지원하도록 동작할 수 있다. 예를 들어, 동작들의 적어도 일부는 분산 또는 원격 시스템에서 이용가능한 프로세서들의 그룹에 의해 수행될 수 있으며, 이들 프로세서들은 통신 네트워크(예를 들어, 인터넷) 및 하나 이상의 소프트웨어 인터페이스(예를 들어, 애플리케이션 프로그램 인터페이스(API))를 통해 액세스가능하다.
본원에서 사용되는 바와 같이, '모듈'이라는 용어는, 전형적으로 사이즈 및/또는 복잡성이 제한되는 유형의 데이터 및 정보 프로세싱 디바이스를 나타낸다. 예를 들어, '모듈'이라는 용어는 데이터 및 정보를 변환할 수 있는 하나 이상의 방법 또는 절차를 나타낼 수 있다. '모듈'이라는 용어는 또한, 컴퓨터 프로그램 내의 하나 이상의 방법 및 절차의 조합을 나타낼 수 있다. '모듈'이라는 용어는 또한, 디지털 로직 디바이스들의 작은 네트워크를 나타낼 수 있으며, 여기서, 로직 디바이스들의 상호연결들은 네트워크에 구조를 제공한다. System C와 같은 특수화된 언어로 특정된 모듈을 포함하는 방법들 및 절차들은 그 방법들 및 절차들로부터 획득되는 결과들과 정확히 동일한 결과들로 데이터 및 정보를 프로세싱하는 디지털 로직 디바이스들의 네트워크에 대한 사양을 생성하는 데 사용될 수 있다.
모듈은 영구적으로 구성될 수 있거나(예를 들어, 하드웨어를 형성하도록 하드와이어링될 수 있거나), 일시적으로 구성될 수 있거나(예를 들어, 소프트웨어로 프로그래밍될 수 있거나), 또는 2개의 구성들의 조합(예를 들어, 구조화된 ASIC)일 수 있다. 영구적으로 구성된 모듈들은, 예를 들어, 주문형 집적 회로(ASIC)들, 이를테면, 산술 로직 유닛(ALU)들, 프로그램가능 로직 어레이(PLA)들, 또는 판독 전용 메모리(ROM)들을 사용하여 제조될 수 있으며, 이들 모두는 전형적으로 제조 동안 구성된다. 일시적으로 구성된 모듈들은, 예를 들어, 필드 프로그램가능 게이트 어레이들(FPGA들 ― 예를 들어, Xilink 또는 Intel의 Altera에 의해 판매됨), 랜덤 액세스 메모리(RAM)들, 또는 마이크로프로세서들을 사용하여 제조될 수 있다. 모듈은, 본 발명의 혁신들, 실시예들, 및/또는 예들의 양태들을 수행하기 위해, 전형적으로 데이터 및 정보에 적용되는 시퀀스 변환들('동작들'로 또한 지칭됨)을 사용하여(또는 ROM들 및 RAM들의 경우, 입력 정보를 출력 데이터 및 정보를 저장하는 메모리에 대한 어드레스로서 사용함으로써 데이터 및 정보를 변환하여), 데이터 및 정보를 프로세싱하도록 구성된다.
일시적으로 구성된 모듈들은 임의의 하나의 시간 인스턴스에 구성될 필요가 없다. 예를 들어, 하나 이상의 모듈을 포함하는 프로세서는 상이한 시간들에 구성된 모듈들을 가질 수 있다. 프로세서는 하나의 시간 인스턴스에 하나 이상의 모듈의 세트를 포함할 수 있고, 상이한 시간 인스턴스에 하나 이상의 모듈의 상이한 세트를 포함할 수 있다. 모듈을 영구적으로 구성된 형태, 일시적으로 구성된 형태, 또는 이 2개의 형태들의 조합으로 제조 또는 구현하기 위한 판정은, 비용, 시간 고려사항들, 엔지니어링 제약들, 및/또는 특정 설계 목표들에 의해 주도될 수 있다. 모듈의 프로세싱의 "본질(substance)"은 그 모듈이 제조 또는 구현된 형태와 무관한다.
본원에서 사용되는 바와 같이, '알고리즘'이라는 용어는 모듈이 결과를 달성하기 위해 데이터 및 정보를 변환하는 데 사용할 수 있는 동작들 또는 명령어들의 시퀀스 또는 세트를 포함하는 프로세스를 나타낸다. 모듈은 하나 이상의 알고리즘을 포함할 수 있다. 본원에서 사용되는 바와 같이, '스레드'라는 용어는 전체 프로세스 또는 알고리즘의 명령어들의 서브세트를 포함할 수 있는 명령어들의 시퀀스를 지칭한다. 프로세스 또는 알고리즘은 병렬로 실행될 수 있는 다수의 스레드들로 파티셔닝될 수 있다.
본원에서 사용되는 바와 같이, '컴퓨터'라는 용어는, 예를 들어, 메모리(예를 들어, NOT-AND 또는 NOT-OR 연산을 사용하는 플립-플롭들에 기초한 메모리)를 추가하여, 트랜지스터들을 포함할 수 있는 전자 게이트들을 사용하여 AND, OR, 및 NOT 논리 연산들(이에 제한되지는 않음)과 같은 특정 연산들을 수행할 수 있는 적어도 하나의 정보 프로세서를 포함한다. 이러한 프로세서는 튜링-컴플리트(Turing-complete) 또는 연산적으로 범용적(computationally universal)이라고 말한다. 컴퓨터는, 그 컴퓨터가 디지털 컴퓨터인지 여부와 무관하게, 전형적으로 다수의 모듈들을 포함한다.
본원에서 사용되는 바와 같이, '소프트웨어' 또는 '프로그램'이라는 용어는 본 명세서에서 설명되는 혁신들, 실시예들, 및 예들에 사용하기 위해 프로세서를 구성하는 하나 이상의 알고리즘 및 데이터 구조를 나타낸다. 소프트웨어에 의해 구성가능한 그러한 디바이스들은 하나 이상의 컴퓨터, 예를 들어, 독립형 클라이언트 또는 서버 컴퓨터들, 또는 하나 이상의 하드웨어 모듈, 또는 하나 이상의 그러한 컴퓨터 또는 모듈의 시스템들을 포함한다. 본원에서 사용되는 바와 같이, "소프트웨어 애플리케이션"이라는 용어는, 특정 결과를 달성하도록, 예를 들어, 워드 프로세싱 동작들을 수행하도록, 또는 데이터의 세트를 암호화하도록 프로세서를 구성하는 데이터 및 명령어들의 세트를 나타낸다.
본원에서 사용되는 바와 같이, '프로그래밍 언어'라는 용어는 소프트웨어를 구성하는 명령어 및 데이터의 세트들을 특정하기 위한 문법 및 구문을 나타낸다. 프로그래밍 언어들은 어셈블러 명령어들, ISA(instruction-set-architecture) 명령어들, 머신 명령어들, 머신 종속 명령어들, 마이크로코드, 펌웨어 명령어들, 상태-설정 데이터, 또는 종래의 절차적 프로그래밍 언어들, 예를 들어, "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어들(이를테면, SystemC), 또는 Smalltalk, C++ 등과 같은 객체 지향 프로그래밍 언어, 및 임의의 향후의 등가의 프로그래밍 언어들과 같은 하나 이상의 상위 레벨 언어들의 임의의 조합으로 기입된 소스 코드 또는 객체 코드 중 어느 하나를 포함한다.
소프트웨어는 데이터 및 정보 저장 디바이스로부터 컴퓨터 또는 컴퓨터 시스템의 하나 이상의 메모리에 입력되고, 동등하게, 판독된다. 컴퓨터는 전형적으로, 소프트웨어를 운반하기 위해 사용되는 저장 매체를 판독하기 위한 디바이스를 갖거나, 또는 네트워크를 통해 소프트웨어를 수신하는 인터페이스 디바이스를 갖는다. 이 프로세스는 일반 컴퓨터 설명 섹션에서 논의된다.
상세한 설명 ― 기술 지원
EDA 시스템/워크플로우 설명
도 10은, 집적 회로를 표현하는 설계 데이터 및 명령어들을 변환 및 검증하기 위해, 컴퓨터와 소프트웨어 툴들, 및 가능하게는 특수 하드웨어-보조 툴들을 사용하여, 집적 회로와 같은 제조 물품을 설계, 검증, 및 제작하는 데 수행되는 다양한 프로세스들을 예시한다. 이들 프로세스들은 설계자에 의해 공급되는 정보를 이용한 제품 아이디어(110)의 생성으로 시작되며, 정보는, EDA 소프트웨어 툴(112)을 사용하는, 제조 물품(본원에서 설계 또는 디바이스로서 지칭됨)을 생성하기 위한 프로세스 동안 변환되고, EDA 소프트웨어 툴(112)은 본원에서 EDA 소프트웨어, 설계 툴, 또는 검증 툴로서 또한 나타낼 수 있다. 설계가 완성될 때, 그 설계는 테이프-아웃(tape-out)(134)될 수 있으며, 이는 전형적으로, 마스크 세트를 제조하기 위해 제작 설비로 집적 회로에 대한 아트워크(artwork)(예를 들어, 기하학적 패턴들)이 전송되는 시점이고, 그 마스크 세트는 집적 회로를 제조하기 위해 추후에 사용된다. 테이프-아웃 후에, 반도체 다이가 제작(136)되고, 패키징 및 조립 프로세스들(138)이 수행되며, 이는 본원에서 회로, 디바이스, 컴포넌트, 칩, 또는 SoC(System on Chip)로서 또한 나타낼 수 있는 완성된 집적 회로(140)를 발생시킨다.
제조 물품들, 예를 들어, 회로 또는 시스템은 저-레벨 트랜지스터 레이아웃들로부터 고-레벨 설명 언어들에 이르는 다양한 추상화 레벨들에서 상업적으로 사용된다. 대부분의 설계자들은, 하드웨어 설명 언어(HDL), 이를테면, VHDL, Verilog, SystemVerilog, SystemC, MyHDL, 또는 OpenVera를 사용하여, 이들의 회로들 및 시스템들을 설계하기 위해 고-레벨의 추상화에서 시작한다. 고-레벨 HDL은 개발자들이, 특히 방대한 시스템에 대해, 이해하는 데 더 용이하고, 하위 추상화 레벨을 사용하여 파악하기 어려운 고도로 복잡한 개념들을 설명할 수 있다. HDL 설명은 개발자들에게 도움이 되는 다른 추상화 레벨들로 변환될 수 있다. 예를 들어, 고-레벨 설명은 로직-레벨 레지스터 전송 레벨(RTL) 설명, 게이트-레벨(GL) 설명, 레이아웃-레벨 설명, 또는 마스크-레벨 설명으로 변환될 수 있다. 각각의 하위 추상화 레벨은 설계 설명에 더 많은 세부사항을 도입한다. 하위 추상화 레벨들은 자동으로 컴퓨터에 의해 생성될 수 있거나, 설계 라이브러리로부터 도출될 수 있거나, 또는 다른 설계 자동화 기법에 의해 생성될 수 있다. 하위 추상화 레벨에서의 명세 언어의 예는 아날로그-기반 회로들의 상세한 설명들에 많이 사용되는 SPICE이다.
EDA 소프트웨어 툴(112)을 사용하는 설계 프로세스는 아래에서 설명되는 프로세스들(114 내지 132)을 포함한다. 이 설계 흐름 설명은 단지 예시 목적들을 위한 것일 뿐이고, 본 개시내용을 제한하도록 의도된 것이 아니다. 예를 들어, 실제 집적 회로 설계는 설계자가 본원에서 설명되는 시퀀스와 상이한 시퀀스로 설계 동작들을 수행하도록 요구할 수 있다.
시스템 설계(114) 동안, 설계자는 제조될 기능성을 설명한다. 설계자는 또한, 기능성을 개량하고 비용들을 체크하는 등을 하기 위해 가정 계획(what-if planning)을 수행할 수 있다. 하드웨어-소프트웨어 아키텍처 파티셔닝이 이 스테이지에서 발생할 수 있다. 이 스테이지에서 사용될 수 있는, 캘리포니아, 마운틴 뷰의 Synopsys, Inc.로부터의 예시적인 EDA 소프트웨어 제품들은: Model Architect, Saber, System Studio, 및 Designware 제품들을 포함한다.
로직 설계 및 기능 검증(116) 동안, 회로 내의 모듈들은 하나 이상의 하드웨어 설명 언어들 또는 HDL들로 특정되며, HDL의 설계는 기능 정확도에 대해 체크되는데, 즉, 설계가 정확한 출력들을 생성하는 것을 보장하도록, 설계되는 회로 또는 시스템의 사양의 요건들과 일치시키기 위해 체크된다. 예시적인 HDL 언어들은 Verilog, VHDL, 및 SystemC이다. 기능 검증은 전형적으로, 소프트웨어-기반 시뮬레이터들, 및 다른 툴들, 이를테면, 테스트벤치 생성기들, 정적 HDL 체킹 툴들, 및 정식 검증 툴들을 사용함으로써 행해진다. 일부 상황들에서, '에뮬레이터들' 또는 '프로토타이핑(prototyping) 시스템들'로 지칭되는 특수 하드웨어가 기능 검증의 속도를 높이기 위해 이용된다. 이 스테이지에서 사용될 수 있는, 캘리포니아, 마운틴 뷰의 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) 동안, 네트리스트는 타이밍 제약들에 대한 순응성(compliance) 및 HDL 코드에 대한 대응성(correspondence)에 대해 체크된다. 이 스테이지에서 사용될 수 있는, 캘리포니아, 마운틴 뷰의 Synopsys, Inc.로부터의 예시적인 EDA 소프트웨어 제품들은: Formality, Primetime, 및 VCS 제품들을 포함한다.
설계 계획(122) 동안, 집적 회로에 대한 전체 플로어 플랜(floor plan)이 구성되고, 타이밍 및 최상위-레벨 라우팅에 대해 분석된다. 이 스테이지에서 사용될 수 있는, 캘리포니아, 마운틴 뷰의 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 제품군을 포함한다.
위에서 언급된 집적 회로 설계 툴들 모두에 대해, 다른 EDA 벤더들, 이를테면, Cadence, Siemens, 다른 기업 엔티티들, 또는 대학교들로부터의 다양한 비-상업적 툴들, 또는 오픈 소스 리포지토리(repository)들로부터의 유사한 툴들이 대안으로서 사용될 수 있다.
본 개시내용의 실시예들은 위에서 설명된 스테이지들 중 하나 이상 동안 사용될 수 있다. 구체적으로, 본 개시내용의 일부 실시예들은 EDA 소프트웨어(112)에서 사용될 수 있다.
본원에서 설명되는 EDA 툴들의 일부 또는 전부, 및 라이브러리에 대한 셀들의 개발 및 라이브러리를 사용하는 물리적 및 논리적 설계를 위해 적용되는 툴들의 기능성을 제공하는 프로그램 및 데이터 구조들을 저장하기 위해 저장 서브시스템이 사용되는 것이 바람직하다. 이들 프로그램들 및 데이터 구조들은 일반적으로, 관련 기술분야의 통상의 기술자에게 공지된 방식으로 하나 이상의 프로세서들에 의해 실행된다.
상세한 설명 ― 기술 지원
에뮬레이션 환경 설명
도 10에 도시된 요소(112)와 같은 EDA 소프트웨어 시스템은 전형적으로, 회로 설계의 기능성을 검증하기 위한 에뮬레이션 시스템(116)을 포함한다. 도 12는 전형적인 에뮬레이션 시스템을 도시하며, 그 에뮬레이션 시스템은 호스트 컴퓨터 시스템(300)(대개 EDA 시스템의 일부) 및 에뮬레이터 시스템(202)(전형적으로 필드 프로그램가능 게이트 어레이(FPGA)들과 같은 프로그램가능 디바이스들의 세트)을 포함한다. 호스트 시스템은, 회로 설계를 에뮬레이트하도록 에뮬레이터를 구성하기 위해, 전형적으로 컴파일러(210)를 사용하여 데이터 및 정보를 생성한다. 에뮬레이트될 하나 이상의 회로 설계는 테스트 중인 설계(Design Under Test)(DUT)로 지칭된다. 에뮬레이터는, 예를 들어, DUT의 기능성을 검증하도록 에뮬레이션 결과들을 사용하기 위해 DUT를 에뮬레이트하는 하드웨어 시스템이다. 본원에서 개시되는 실시예들에 사용될 수 있는 에뮬레이션 시스템의 일 예는 Synopsys, Inc.로부터 입수가능한 ZeBu 서버이다.
호스트 시스템(300)은 하나 이상의 프로세서를 포함한다. 호스트 시스템이 다수의 프로세서들로 구성되는 실시예에서, 호스트 시스템에 의해 수행되는 것으로 본원에서 설명되는 기능들은 다수의 프로세서들 사이에서 분산될 수 있다.
호스트 시스템(300)은 전형적으로 컴파일러(210)를 포함하며, 컴파일러(210)는 DUT를 표현하는 하드웨어 설명 언어로 기입된 코드를 프로세싱하여, DUT를 에뮬레이트하도록 에뮬레이션 시스템(202)을 구성하는 데 사용되는 정보 및 데이터(전형적으로 이진)를 생성한다. 컴파일러(210)는 DUT를 변환하고/하거나, DUT를 변경하고/하거나, DUT를 재구성하고/하거나, DUT에 새로운 기능들을 추가하고/하거나 DUT의 타이밍을 제어할 수 있다.
호스트 시스템 및 에뮬레이터는 에뮬레이션 연결에 의해 운반되는 신호들을 사용하여 데이터 및 정보를 교환한다. 연결은 하나 이상의 전기 케이블, 예를 들어, RS232 또는 USB 프로토콜들과 호환가능한 핀 구성들을 갖는 케이블들일 수 있다. 연결은 로컬 영역 네트워크와 같은 유선 통신 매체 또는 네트워크, 또는 인터넷과 같은 광역 네트워크일 수 있다. 연결은, Bluetooth.RTM. 또는 IEEE 802.11과 같은 무선 프로토콜을 사용하는, 하나 이상의 액세스 포인트를 갖는 무선 통신 매체 또는 네트워크일 수 있다. 호스트 시스템 및 에뮬레이터는 네트워크 서버와 같은 제3 디바이스를 통해 데이터 및 정보를 교환할 수 있다.
에뮬레이터는 다수의 FPGA들(또는 다른 프로그램가능 디바이스들), 예를 들어, 도 12의 요소들(204 1 내지 204 N )을 포함한다. 각각의 FPGA는 하나 이상의 FPGA 인터페이스를 포함할 수 있으며, FPGA들이 신호들을 교환하기 위해, FPGA가 하나 이상의 FPGA 인터페이스를 통해 에뮬레이터의 다른 FPGA들(및 잠재적으로 다른 에뮬레이터 하드웨어 컴포넌트들)에 연결된다. FPGA 인터페이스는 또한, 입력/출력 핀 또는 FPGA 패드로 지칭될 수 있다. 본원에서 개시되는 일부 실시예들이 FPGA들을 포함하는 에뮬레이터들을 사용하지만, 다른 실시예들은 DUT들을 에뮬레이트하기 위해 FPGA들 대신에 또는 이들과 함께, 다른 타입의 로직 블록들, 예를 들어, 커스텀 FPGA들, 에뮬레이션 또는 프로토타이핑을 위한 특수화된 ASIC들, 메모리들, 및 입력/출력 디바이스들을 포함할 수 있다.
프로그램가능 디바이스는 프로그램가능 로직 블록들의 어레이, 및 프로그램가능 로직 블록들이 HDL 코드의 설명들에 따라 서로 연결될 수 있게 하는 재구성가능 상호연결들의 계층을 포함할 수 있다. 프로그램가능 로직 블록들 각각은 복잡한 조합 기능들을 수행하도록 구성될 수 있거나, 또는 단지 단순한 로직 게이트들, 이를테면, AND 및 XOR 로직 블록들일 수 있다.
다수의 FPGA들에서, 로직 블록들은 또한 메모리 요소들을 포함하며, 메모리 요소들은 단순한 래치들, 플립-플롭들, 또는 더 복잡한 메모리 블록들일 수 있다. 상이한 로직 블록들 사이의 상호연결들의 길이에 따라, 신호들은 상이한 시간들에 로직 블록들의 입력 단자들에 도달할 수 있다.
프로그램가능 프로세서들(204 1 내지 204 N )은 하나 이상의 하드웨어 보드(212 1 내지 212 M ) 내에 배치될 수 있다. 이러한 보드들 중 다수는 하드웨어 유닛(예를 들어, 214 1 ) 내에 배치될 수 있다. 유닛 내의 보드들은 유닛의 백플레인 또는 임의의 다른 타입의 연결들을 사용하여 연결될 수 있다. 추가로, 다수의 하드웨어 유닛들(예를 들어, 214 1 내지 214 K )이 멀티-유닛 시스템을 형성하기 위해 케이블들 또는 임의의 다른 수단에 의해 서로 연결될 수 있다. 일반적으로, 하드웨어 에뮬레이션 또는 프로토타입 시스템(202)은, 본 개시내용의 교시들로부터 벗어나지 않으면서, 단일 보드, 다수의 보드들을 갖는 단일 유닛, 또는 다수의 유닛들을 사용하여 형성될 수 있다.
에뮬레이트될 DUT에 대해, 에뮬레이터는 DUT의 설명을 포함하는 하나 이상의 비트 파일을 호스트 시스템으로부터 수신한다. 비트 파일들은 트레이스 및 주입 로직(trace and injection logic), 에뮬레이터의 FPGA들로의 파티션들의 매핑들, 및 설계 제약들과 함께 호스트 시스템에 의해 생성된 DUT의 파티션들을 추가로 특정한다. 비트 파일들에 기초하여, 에뮬레이터는 DUT의 기능들을 수행하도록 FPGA들을 구성한다. 일부 에뮬레이터들의 경우, 에뮬레이터의 하나 이상의 FPGA는 FPGA의 실리콘 내에 구축된 트레이스 및 주입 로직을 이미 갖고 있다. 이러한 타입의 에뮬레이터의 경우, FPGA들은 호스트 시스템에 의해 트레이스 및 주입 로직을 에뮬레이트하도록 구성될 필요가 없다.
호스트 시스템(110)은 에뮬레이트될 DUT의 설명을 (예를 들어, 사용자로부터 또는 데이터 저장소로부터) 수신한다. 일 실시예에서, DUT 설명은 레지스터 전송 언어(RTL)와 같은 하드웨어 설명 언어(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들을 하나씩, 한 번에 여러 개씩, 또는 전적으로 재-에뮬레이트(re-emulate)하도록 명령한다. 호스트 시스템은, 시간 기간에 대해 컴포넌트를 재-에뮬레이트하기 위해, 검색된 인터페이스 신호들을 에뮬레이터에 송신한다. 각각의 식별된 FPGA의 트레이스 및 주입 로직은 호스트 시스템으로부터 수신된 그의 각자의 인터페이스 신호들을 FPGA로 매핑된 DUT의 로직 내에 주입한다. FPGA의 다수의 재-에뮬레이션들의 경우, 결과들은 전체 디버그 뷰를 갖도록 모두 함께 병합될 수 있다.
호스트 시스템은 에뮬레이터로부터 컴포넌트의 재-에뮬레이션 동안 식별된 FPGA들의 로직에 의해 트레이싱된 신호들을 수신한다. 호스트 시스템은 에뮬레이터로부터 수신된 신호들을 저장한다. 재-에뮬레이션 동안 트레이싱된 신호들은 초기 에뮬레이션 동안보다 더 높은 샘플링 레이트를 가질 수 있다. 예를 들어, 초기 실행에서, 트레이싱된 신호는 매 X 밀리초마다 세이브(save)된 하드웨어 상태로 구성될 수 있다. 그러나, 재-에뮬레이션에서, 트레이싱된 신호는 매 Y 밀리초마다 세이브된 하드웨어 상태로 구성될 수 있으며, 여기서, Y는 X 미만이다. 사용자가 재-에뮬레이션 동안 트레이싱된 신호의 파형을 보기를 요청하는 경우, 호스트 시스템은 저장된 신호를 검색하고, 신호의 플롯을 디스플레이할 수 있다(신호의 파형을 생성함). 그 후, 사용자는, 예를 들어, 동일한 컴포넌트를 재-에뮬레이트하지만 상이한 시간 기간에 대해 재-에뮬레이트하도록, 또는 다른 컴포넌트를 재-에뮬레이트하도록 요청할 수 있다.
호스트 시스템은 전형적으로, 적어도 7개의 서브-시스템들: 설계 합성기, 매핑 모듈, 실행 시간 모듈, 결과 모듈, 디버그 모듈, 파형 모듈, 및 저장 모듈을 포함한다. 이들 서브-시스템들 각각은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합으로서 구현될 수 있다. 이들 컴포넌트들은 함께 에뮬레이터를 구성하고, 에뮬레이션 결과들을 모니터링한다.
설계 합성기는 DUT의 HDL을 게이트 레벨 로직으로 변환한다. 에뮬레이트될 DUT에 대해, 설계 합성기는 DUT의 설명을 수신한다. DUT의 설명이 완전히 또는 부분적으로 HDL로 이루어진 경우(예를 들어, RTL 또는 다른 추상화 레벨), 설계 합성기(210)는 게이트 레벨 로직에 관하여 DUT의 설명을 이용하여 게이트-레벨 네트리스트를 생성하기 위해 DUT의 HDL을 합성한다.
매핑 모듈은 DUT들을 파티셔닝하고, 파티션들을 에뮬레이터 FPGA들로 매핑한다. 매핑 모듈은 DUT의 네트리스트를 사용하여 게이트 레벨에 있는 DUT를 다수의 파티션들로 파티셔닝한다. 각각의 파티션에 대해, 매핑 모듈은 트레이스 및 주입 로직의 게이트 레벨 설명을 검색하고, 로직을 파티션 내에 포함시킨다. 위에서 설명된 바와 같이, 파티션에 포함된 트레이스 및 주입 로직은 파티션이 매핑된 FPGA의 인터페이스들을 통해 교환되는 트레이스 신호들(트레이스 인터페이스 신호들)을 트레이싱하도록 구성된다. 트레이스 및 주입 로직은 파티셔닝 전에 DUT 내에 포함될 수 있다. 예를 들어, 트레이스 및 주입 로직은 DUT의 HDL을 합성하기 전에 또는 그 후에 설계 합성기에 의해 포함될 수 있다. 따라서, 트레이스 및 주입 로직은 파티션들과 일치하지 않을 수 있으며, 트레이스 및 주입 로직은 서브세트일 수 있거나, 수퍼세트(superset)일 수 있거나, 또는 심지어 파티션들과 상이할 수 있다.
트레이스 및 주입 로직을 포함시키는 것에 추가하여, 매핑 모듈은 트레이스 및 주입 로직에 의해 트레이싱되지 않는 특정 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가 특정 양의 사이클들을 실행하기 위해서는 1시간이 걸릴 수 있다. 그러나, 식별된 FPGA의 구성이 다수의 FPGA들에 로딩되고, FPGA들 각각이 사이클들의 서브세트를 실행하는 경우, FPGA들이 사이클들 모두를 공동으로 실행하는 데 단지 몇 분만이 걸릴 수 있다.
사용자는 재-에뮬레이트할 DUT 신호들의 계층 또는 리스트를 식별할 수 있다. 이를 가능하게 하기 위해, 디버그 모듈은 신호들의 계층 또는 리스트를 에뮬레이트하는 데 필요한 FPGA를 결정하고, 필요한 인터페이스 신호들을 검색하고, 재-에뮬레이션을 위해, 검색된 인터페이스 신호들을 에뮬레이터에 송신한다. 따라서, 사용자는 디버깅/재-에뮬레이트할 DUT의 임의의 요소(예를 들어, 컴포넌트 또는 신호)를 식별할 수 있다.
파형 모듈은 트레이싱된 신호들에 기초하여 파형들을 생성한다. 사용자가 에뮬레이션 실행 동안 트레이싱된 신호의 파형을 보기를 요청하는 경우, 호스트 시스템은 저장 모듈로부터 신호를 검색한다. 파형 모듈은 사용자에게 신호의 플롯을 디스플레이한다. 하나 이상의 신호에 대해, 신호들이 에뮬레이터로부터 수신될 때, 파형 모듈은 신호들의 플롯들을 자동으로 생성할 수 있다.
상세한 설명 ― 의미적 지원(SEMANTIC SUPPORT)
'상업적 솔루션(commercial solution)'이라는 표현(signifier)은, 다음의 단락에 대해서만, 기술 문제를 해소하기 위해 상업적으로 유용한, 즉, 과학 애플리케이션에 대해 상업적으로 사용되거나 또는 기술에 대해 상업적으로 사용되는 엔지니어링 도메인-특정 (그리고 그에 따라 비-선점임 ― Bilski 참조) 전자 구조, 특정 머신들에 대한 프로세스, 제조가능 회로 (및 이들의 처치-튜링(Church-Turing) 등가물들), 또는 물질 조성을 나타낸다.
(하나 이상의 자연 법칙의 과학 애플리케이션{Benson 참조}이고, 상업적으로 사용되는 기술 문제{Diehr 참조}를 해소하는(또는 기존의 상업적 솔루션{Diehr 참조}을 개선하는) 새로운 상업적 솔루션에 대해 본원에서 개시되는 임의의 실시예들에 대한 특허 청구항에 사용될 때) '추상(abstract)'이라는 표현은 다음과 같이 본 발명자(들)에 의해 정확하게 정의된다{MPEP 2111.01 참조}:
a) 새로운 상업적 솔루션이 신규하지 않고(예를 들어, 새로운 상업적 솔루션이 동등한 종래 기술{Alice 참조}에 매우 잘 알려져 있고/있거나 등가의 종래 기술 솔루션들{Bilski 참조}의 사용이 과학, 엔지니어링, 또는 상업에 오랫동안 널리 알려져 있음), 그에 따라, 예를 들어, 상업적 솔루션이 등가의 종래 기술 솔루션들과 어떻게 상이한지를 "이해하기 어렵기"{'추상'에 대한 메리엄-웹스터(Merriam-Webster) 정의 참조} 때문에, 35 U.S.C. 102 하에서 특허불가능한 경우, 새로운 상업적 솔루션은 '추상'이거나; 또는
b) 새로운 상업적 솔루션이 자명하고, 즉, 기존의 종래 기술이 적어도 하나의 유사한 종래 기술 솔루션{KSR 참조}을 포함하거나, 또는 기존의 종래 기술이 새로운 상업적 솔루션과 동등하게 되도록 관련 기술분야의 통상의 기술자{"PHOSITA", MPEP 2141-2144 참조}에 의해 조합될 수 있는 적어도 2개의 종래 기술 아이템들{Alice 참조}을 포함하고, 그에 따라, 예를 들어, 새로운 상업적 솔루션이 기존의 종래 기술의 PHOSITA-조합/-애플리케이션과 어떻게 상이한지를 "이해하기 어렵기" 때문에, 35 U.S.C. 103 하에서 특허불가능한 경우, 새로운 상업적 솔루션은 '추상'이거나; 또는
c) 예를 들어, PHOSITA에 의해 특수 프로그래밍{Katz 참조} 또는 회로 설계가 수행되도록 요구하지 않고는, PHOSITA가 새로운 상업적 솔루션의 유용한 실시예를 인스턴스화할 수 없도록, 실시가능하게 하는 설명에서 안내가 불충분하기 때문에 또는 특정되지 않은 요소들, 파라미터들, 또는 기능성으로 일반적인 구현만이 설명되기 때문에{Mayo 참조}, 실시가능하게 하는 설명에서 새로운 상업적 솔루션이 개시되지 않고, 그에 따라, 예를 들어, 새로운 상업적 솔루션의 임의의 실시예를 상업적으로 어떻게 사용하는지를 "이해하기 어렵기" 때문에, 35 U.S.C. 112 하에서 특허불가능한 경우, 새로운 상업적 솔루션은 '추상'이다.
상세한 설명 ― 결론
전술한 상세한 설명은 본원에서 설명되는 개별 피처들, 구조들, 기능들, 또는 특성들, 및 2개 이상의 그러한 피처들, 구조들, 기능들, 또는 특성들의 임의의 조합을, 그러한 피처들, 구조들, 기능들, 또는 특성들, 또는 이들의 조합들이 본원에서 개시되는 임의의 문제들을 해소하는지와 무관하게, 그러한 피처들, 구조들, 기능들, 또는 특성들, 또는 이들의 조합들이 관련 기술분야의 통상의 기술자의 지식을 고려하여 본 명세서 전체에 기초하는 정도까지 그리고 청구항들의 범위를 제한하지 않게 개별적으로 나타낸다. 청구되는 발명의 실시예가 특정 피처, 구조, 기능, 또는 특성을 포함할 때, 예를 들어, 다른 피처, 구조, 기능, 또는 특성을 대신하는 것으로 명시적으로 설명되든 그렇지 않든 간에, 다른 실시예들과 관련하여 그러한 피처, 구조, 기능, 또는 특성을 사용하는 것은 관련 기술분야의 통상의 기술자의 지식 내에 있다.
전술한 상세한 설명을 고려하여, 본원에서 설명되는 원리들로부터 벗어나지 않으면서, 본원에서 설명되는 요소들의 기능 및 배열과 같은, 혁신들, 실시예들, 및/또는 예들의 범위 내에서 다수의 변형들이 이루어질 수 있다는 것이 관련 기술분야의 통상의 기술자에게 자명할 것이다. 관련 기술분야의 통상의 기술자에게 명백할 바와 같이, 실시예의 하나 이상의 요소는 다른 실시예에서의 하나 이상의 요소를 대신할 수 있다. 본원에서 설명되는 실시예들은 본 발명의 원리들 및 이의 유용한 애플리케이션을 나타내기 위해 선택되어, 관련 기술분야의 다른 기술자로 하여금 다양한 실시예들 및 변형들이 나타낸 특정 용도들에 어떻게 적합한지를 이해할 수 있게 한다.
청구되는 발명들의 혁신들, 실시예들, 및/또는 예들의 전술한 상세한 설명은 예시 및 설명의 목적들을 위해 제공되었다. 이는 포괄적이도록 의도되지도 청구되는 발명들을 설명된 정확한 형태들로 제한하도록 의도되지도 않고, 본원에서 개시되는 원리들 및 피처들과 일치하는 가장 넓은 범위가 부여되어야 한다. 분명히, 다수의 변형들이 관련 기술분야의 통상의 기술자에 의해 인식될 것이다. 제한 없이, 본 특허 출원에 참조로 설명되거나, 나타내거나, 또는 포함된 임의의 및 모든 등가물들은 혁신들, 실시예들, 및/또는 예들의 본원의 설명에 참조로 구체적으로 포함된다. 추가로, 임의의 일 실시예에 대하여 본원에서 참조로 설명되거나, 나타내거나, 또는 포함된 임의의 및 모든 변형들은 또한, 모든 다른 실시예들에 대하여 교시되는 것으로 간주되어야 한다. 임의의 이러한 변형들은 현재 공지된 변형들은 물론 향후의 변형들 둘 모두를 포함하며, 예를 들어, 본원에서 사용되는 임의의 요소는 향후의 등가물의 구조와 무관하게 동일한 기능을 제공하는 향후의 등가의 요소를 포함한다.
청구되는 발명들의 범위는 다음의 청구항들 및 등가물들에 의해 정의 및 판단되도록 의도된다. 다음의 청구항들은, 각각의 청구항이 개별 실시예로서 자체적으로 성립하면서, 이로써 상세한 설명에 포함된다. 개시되는 실시예들은 청구항들에 명시적으로 기재된 것보다 더 많은 피처들로 설명될 수 있다.

Claims (21)

  1. 적어도 하나의 프로세서, 및 명령어들을 저장하는 적어도 하나의 메모리를 포함하는 하드웨어 에뮬레이션 시스템으로서,
    상기 명령어들은 상기 시스템으로 하여금:
    회로의 네트리스트를 수신하고;
    상기 네트리스트를 유향 그래프로 변환하고;
    상기 유향 그래프에서 하나 이상의 강하게 연결된 컴포넌트(SCC)를 식별함으로써 상기 유향 그래프 내의 하나 이상의 루프를 식별하고 - 상기 하나 이상의 SCC 각각은 복수의 정점들, 및 상기 복수의 정점들을 연결하는 복수의 에지들을 포함함 -;
    상기 SCC의 n개의 에지를 n개의 루프 브레이커로 대체하고 - n은 0보다 큼 -;
    2n개의 네트리스트를 생성하기 위해 상기 n개의 루프 브레이커에 1들 및 0들의 상수 값들을 적용하고;
    발진 검출기 및 상태-유지 검출기를 사용하여 발진 상태 및 상태-유지 상태 중 하나 이상을 검출하기 위해 상기 2n개의 네트리스트에 기초하여 하드웨어 에뮬레이션을 수행하게 하는, 하드웨어 에뮬레이션 시스템.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 제1항에 있어서, 상기 하드웨어 에뮬레이션 시스템은 다음의 표현식:
    Figure 112022141725198-pct00040

    에 따라 발진을 검출하고,
    여기서, Y는 불 변수들의 벡터이고, "~"는 부정 연산을 나타내고,
    Figure 112022141725198-pct00041
    은 n개의 변수를 갖는 불 함수를 나타내고,δ는:
    Figure 112022141725198-pct00042

    으로서 정의되고,
    여기서, x는 불 세트 {0,1}의 요소이고, f는 불 함수이고, S는
    Figure 112022141725198-pct00043
    의 요소이고,
    Figure 112022141725198-pct00044
    는 Y부터 B까지의 상기 불 함수를 나타내며, k는 1부터 n까지 변하는 인덱스이고, S[k]는
    Figure 112022141725198-pct00045
    에 속하는 n-튜플 S의 k번째 불 값을 나타내는, 하드웨어 에뮬레이션 시스템.
  6. 제1항에 있어서, 상기 하드웨어 에뮬레이션 시스템은 다음의 표현식:
    Figure 112022141725198-pct00046

    에 따라 상태 유지를 검출하고,
    여기서, Y는 불 변수들의 벡터이고, "~"는 부정 연산을 나타내고,
    Figure 112022141725198-pct00047
    은 n개의 변수를 갖는 불 함수를 나타내고,δ는:
    Figure 112022141725198-pct00048

    으로서 정의되고,
    여기서, x는 불 세트 {0,1}의 요소이고, f는 불 함수이고,
    Figure 112022141725198-pct00049
    Figure 112022141725198-pct00050
    Figure 112022141725198-pct00051
    의 요소들이고,
    Figure 112022141725198-pct00052
    Figure 112022141725198-pct00053
    보다 작고,
    Figure 112022141725198-pct00054
    는 Y로부터 B까지의 상기 불 함수를 나타내고, k는 1부터 n까지 변하는 인덱스이고,
    Figure 112022141725198-pct00055
    Figure 112022141725198-pct00056
    에 속하는 n-튜플
    Figure 112022141725198-pct00057
    의 k번째 불 값을 나타내고,
    Figure 112022141725198-pct00058
    Figure 112022141725198-pct00059
    에 속하는 n-튜플
    Figure 112022141725198-pct00060
    의 k번째 불 값을 나타내고, *는 곱셈 연산을 나타내는, 하드웨어 에뮬레이션 시스템.
  7. 회로 에뮬레이션을 통한 회로 루프 검출을 위한 방법으로서,
    회로의 네트리스트를 수신하는 단계;
    상기 네트리스트를 유향 그래프로 변환하는 단계;
    상기 유향 그래프에서 하나 이상의 강하게 연결된 컴포넌트(SCC)를 식별함으로써 상기 유향 그래프 내의 하나 이상의 루프를 식별하는 단계 - 상기 하나 이상의 SCC 각각은 복수의 정점들, 및 상기 복수의 정점들을 연결하는 복수의 에지들을 포함함 -;
    상기 SCC의 n개의 에지를 n개의 루프 브레이커로 대체하는 단계 - n은 0보다 큼 -;
    2n개의 네트리스트를 생성하기 위해 상기 n개의 루프 브레이커에 1들 및 0들의 상수 값들을 적용하는 단계; 및
    발진 검출기 및 상태-유지 검출기를 사용하여 발진 상태 및 상태-유지 상태 중 하나 이상을 검출하기 위해 상기 2n개의 네트리스트에 기초하여 하드웨어 에뮬레이션을 수행하는 단계를 포함하는, 방법.
  8. 삭제
  9. 삭제
  10. 삭제
  11. 제7항에 있어서, 상기 발진 검출은 다음의 표현식:
    Figure 112022141725198-pct00061

    에 따라 수행되고,
    여기서, Y는 불 변수들의 벡터이고, "~"는 부정 연산을 나타내고,
    Figure 112022141725198-pct00062
    은 n개의 변수를 갖는 불 함수를 나타내고,δ는:
    Figure 112022141725198-pct00063

    으로서 정의되고,
    여기서, x는 불 세트 {0,1}의 요소이고, f는 불 함수이고, S는
    Figure 112022141725198-pct00064
    의 요소이고,
    Figure 112022141725198-pct00065
    는 Y부터 B까지의 상기 불 함수를 나타내며, k는 1부터 n까지 변하는 인덱스이고, S[k]는
    Figure 112022141725198-pct00066
    에 속하는 n-튜플 S의 k번째 불 값을 나타내는, 방법.
  12. 제7항에 있어서, 상기 상태 유지 검출은 다음의 표현식:
    Figure 112022141725198-pct00067

    에 따라 수행되고,
    여기서, Y는 불 변수들의 벡터이고, "~"는 부정 연산을 나타내고,
    Figure 112022141725198-pct00068
    은 n개의 변수를 갖는 불 함수를 나타내고,δ는:
    Figure 112022141725198-pct00069

    으로서 정의되고,
    여기서, x는 불 세트 {0,1}의 요소이고, f는 불 함수이고, S는
    Figure 112022141725198-pct00070
    의 요소이고,
    Figure 112022141725198-pct00071
    는 Y로부터 B까지의 상기 불 함수를 나타내고, k는 1부터 n까지 변하는 인덱스이고, S[k]는
    Figure 112022141725198-pct00072
    에 속하는 n-튜플 S의 k번째 불 값을 나타내는, 방법.
  13. 삭제
  14. 삭제
  15. 삭제
  16. 실행가능 명령어들을 포함하는 비-일시적 컴퓨터 판독가능 저장 매체로서,
    상기 실행가능 명령어들은, 프로세서에 의해 실행될 때, 상기 프로세서로 하여금,
    회로의 네트리스트를 수신하고;
    상기 네트리스트를 유향 그래프로 변환하고;
    상기 유향 그래프에서 하나 이상의 강하게 연결된 컴포넌트(SCC)를 식별함으로써 상기 유향 그래프 내의 하나 이상의 루프를 식별하고 - 상기 하나 이상의 SCC 각각은 복수의 정점들, 및 상기 복수의 정점들을 연결하는 복수의 에지들을 포함함 -;
    상기 SCC의 n개의 에지를 n개의 루프 브레이커로 대체하고 - n은 0보다 큼 -;
    2n개의 네트리스트를 생성하기 위해 상기 n개의 루프 브레이커에 1들 및 0들의 상수 값들을 적용하고;
    발진 검출기 및 상태-유지 검출기를 사용하여 발진 상태 및 상태-유지 상태 중 하나 이상을 검출하기 위해 상기 2n개의 네트리스트에 기초하여 하드웨어 에뮬레이션을 수행하게 하도록 구성되는, 비-일시적 컴퓨터 판독가능 저장 매체.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 제16항에 있어서, 상기 발진은 다음의 표현식:
    Figure 112022141725198-pct00073

    에 따라 검출되고,
    여기서, Y는 불 변수들의 벡터이고, "~"는 부정 연산을 나타내고,
    Figure 112022141725198-pct00074
    은 n개의 변수를 갖는 불 함수를 나타내고,δ는:
    Figure 112022141725198-pct00075

    으로서 정의되고,
    여기서, x는 불 세트 {0,1}의 요소이고, f는 불 함수이고, S는
    Figure 112022141725198-pct00076
    의 요소이고,
    Figure 112022141725198-pct00077
    는 Y부터 B까지의 상기 불 함수를 나타내며, k는 1부터 n까지 변하는 인덱스이고, S[k]는
    Figure 112022141725198-pct00078
    에 속하는 n-튜플 S의 k번째 불 값을 나타내는, 비-일시적 컴퓨터 판독가능 저장 매체.
  21. 제16항에 있어서, 상기 상태 유지는 다음의 표현식:
    Figure 112022141725198-pct00079

    에 따라 검출되고,
    여기서, Y는 불 변수들의 벡터이고, "~"는 부정 연산을 나타내고,
    Figure 112022141725198-pct00080
    은 n개의 변수를 갖는 불 함수를 나타내고,δ는:
    Figure 112022141725198-pct00081

    으로서 정의되고,
    여기서, x는 불 세트 {0,1}의 요소이고, f는 불 함수이고, S는
    Figure 112022141725198-pct00082
    의 요소이고,
    Figure 112022141725198-pct00083
    는 Y로부터 B까지의 상기 불 함수를 나타내고, k는 1부터 n까지 변하는 인덱스이고, S[k]는
    Figure 112022141725198-pct00084
    에 속하는 n-튜플 S의 k번째 불 값을 나타내는, 비-일시적 컴퓨터 판독가능 저장 매체.
KR1020217012189A 2018-09-25 2019-09-25 상태-유지 루프들 및 발진 루프들을 식별하기 위한 하드웨어 시뮬레이션 시스템들 및 방법들 KR102545621B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862735930P 2018-09-25 2018-09-25
US62/735,930 2018-09-25
PCT/US2019/052965 WO2020068988A1 (en) 2018-09-25 2019-09-25 Hardware simulation systems and methods for identifying state-holding loops and oscillating loops

Publications (2)

Publication Number Publication Date
KR20210057183A KR20210057183A (ko) 2021-05-20
KR102545621B1 true KR102545621B1 (ko) 2023-06-20

Family

ID=68165837

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217012189A KR102545621B1 (ko) 2018-09-25 2019-09-25 상태-유지 루프들 및 발진 루프들을 식별하기 위한 하드웨어 시뮬레이션 시스템들 및 방법들

Country Status (5)

Country Link
US (1) US11475197B2 (ko)
EP (1) EP3857430A1 (ko)
KR (1) KR102545621B1 (ko)
CN (1) CN112673376B (ko)
WO (1) WO2020068988A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11176299B1 (en) 2020-07-15 2021-11-16 International Business Machines Corporation Analysis of signal transitions in feedback circuits
CN114638184B (zh) * 2022-05-23 2022-08-09 南昌大学 门级电路的仿真方法、系统、存储介质及设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090044157A1 (en) * 2004-11-15 2009-02-12 Mentor Graphics Corporation Acyclic Modeling of Combinational Loops

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4769817A (en) 1986-01-31 1988-09-06 Zycad Corporation Concurrent fault simulation for logic designs
JPH06290230A (ja) 1993-03-31 1994-10-18 Toshiba Corp 論理シミュレーション装置
US5572710A (en) 1992-09-11 1996-11-05 Kabushiki Kaisha Toshiba High speed logic simulation system using time division emulation suitable for large scale logic circuits
JP4202673B2 (ja) * 2002-04-26 2008-12-24 株式会社東芝 システムlsi開発環境生成方法及びそのプログラム
US8532975B2 (en) * 2009-06-12 2013-09-10 Cadence Design Systems, Inc. System and method implementing a simulation acceleration capture buffer
TW201224748A (en) * 2010-12-06 2012-06-16 Ind Tech Res Inst Transaction level system power estimation method and system
US20130097568A1 (en) * 2011-10-14 2013-04-18 William W. Yang Global clock handler object for hdl environment
WO2015052817A1 (ja) * 2013-10-10 2015-04-16 株式会社東芝 音訳作業支援装置、音訳作業支援方法及びプログラム
US9465938B2 (en) * 2014-09-22 2016-10-11 Qualcomm Incorporated Integrated circuit and method for detection of malicious code in a first level instruction cache
US9830134B2 (en) * 2015-06-15 2017-11-28 Qualcomm Incorporated Generating object code from intermediate code that includes hierarchical sub-routine information

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090044157A1 (en) * 2004-11-15 2009-02-12 Mentor Graphics Corporation Acyclic Modeling of Combinational Loops

Also Published As

Publication number Publication date
WO2020068988A1 (en) 2020-04-02
CN112673376B (zh) 2024-07-23
KR20210057183A (ko) 2021-05-20
CN112673376A (zh) 2021-04-16
EP3857430A1 (en) 2021-08-04
US11475197B2 (en) 2022-10-18
US20200097627A1 (en) 2020-03-26

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
US10949591B1 (en) Hardware based state signature generation and check for test and debug of semiconductor circuit functionality
US11036907B2 (en) Automatic testbench generator for test-pattern validation
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
US10949589B2 (en) Method for compression of emulation time line in presence of dynamic re-programming of clocks
US11763053B2 (en) Coherent observability and controllability of overlaid clock and data propagation in emulation and prototyping
US10796048B1 (en) Adding delay elements to enable mapping a time division multiplexing circuit on an FPGA of a hardware emulator
US10990735B2 (en) System and method for generating a cluster-based power architecture user interface
KR20210129071A (ko) 상관된 샘플 생성 및 효율적인 통계적 시뮬레이션을 사용하여 타이밍 수율 및 수율 병목을 컴퓨팅하기 위한 신규한 방법
US10878153B1 (en) Apparatuses and methods for accurate and efficient clock domain and reset domain verification with register transfer level memory inference
US11003819B1 (en) Method to enable multiple users of embedded-software debug to share a single hardware resource
US11275877B2 (en) Hardware simulation systems and methods for reducing signal dumping time and size by fast dynamical partial aliasing of signals having similar waveform
US11327790B1 (en) Event-level parallel simulation using dynamic synchronization
KR102545621B1 (ko) 상태-유지 루프들 및 발진 루프들을 식별하기 위한 하드웨어 시뮬레이션 시스템들 및 방법들
US10599800B2 (en) Formal clock network analysis, visualization, verification and generation
US11475293B1 (en) Learning-based toggle estimation
US10515170B1 (en) Deep insight for debug using internal equivalence visualization and counter-example for sequential equivalence checking
US10579760B2 (en) Force/release support in emulation and formal verification
US10962595B1 (en) Efficient realization of coverage collection in emulation
US11176293B1 (en) Method and system for emulation clock tree reduction
US11106663B1 (en) Speeding matching search of hierarchical name structures
US11343110B2 (en) Phantom object reporting in a power-and-ground router
CN112818627A (zh) 电路设计、测试和/或制造的更有效/有用的电子结构

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant