KR20230114264A - 에뮬레이션 시스템들에 대한 머신 러닝 지연 추정 - Google Patents

에뮬레이션 시스템들에 대한 머신 러닝 지연 추정 Download PDF

Info

Publication number
KR20230114264A
KR20230114264A KR1020237014259A KR20237014259A KR20230114264A KR 20230114264 A KR20230114264 A KR 20230114264A KR 1020237014259 A KR1020237014259 A KR 1020237014259A KR 20237014259 A KR20237014259 A KR 20237014259A KR 20230114264 A KR20230114264 A KR 20230114264A
Authority
KR
South Korea
Prior art keywords
delay
path
dut
fpgas
combined
Prior art date
Application number
KR1020237014259A
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 KR20230114264A publication Critical patent/KR20230114264A/ko

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3183Generation of test inputs, e.g. test vectors, patterns or sequences
    • G01R31/318321Generation of test inputs, e.g. test vectors, patterns or sequences for combinational circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/347Physical level, e.g. placement or routing
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3183Generation of test inputs, e.g. test vectors, patterns or sequences
    • G01R31/318328Generation of test inputs, e.g. test vectors, patterns or sequences for delay tests
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3183Generation of test inputs, e.g. test vectors, patterns or sequences
    • G01R31/318342Generation of test inputs, e.g. test vectors, patterns or sequences by preliminary fault modelling, e.g. analysis, simulation
    • G01R31/318357Simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • G06F30/27Design optimisation, verification or simulation using machine learning, e.g. artificial intelligence, neural networks, support vector machines [SVM] or training a model
    • 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
    • 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/3312Timing analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/261Functional testing by simulating additional hardware, e.g. fault simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/12Timing analysis or timing optimisation
    • 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

Abstract

지연 추정 시스템은 에뮬레이션 시스템에 대한 DUT의 지연을 추정한다. 지연 추정 시스템은 DUT의 로직 블록들과, 로직 블록들 중 하나 이상을 연결하는 조합 경로를 수신한다. 시스템은 조합 경로를 나타내는 피쳐 벡터에 지연 모델을 적용하고, 여기서 지연 모델은 조합 경로의 지연을 결정할 수 있다. 지연 모델은 머신 러닝 모델일 수 있다. 시스템은 결정된 지연을 이용하여 타이밍 그래프를 생성하고 그 타이밍 그래프를 컴파일러에 제공하여 DUT의 배치 및 라우팅을 수행한다.

Description

에뮬레이션 시스템들에 대한 머신 러닝 지연 추정
관련 출원
본 출원은, 35 U.S.C. §119(e)의 규정에 따라, 2020년 12월 11일자로 출원되고 발명의 명칭이 "Integrating Machine Learning Delay Estimation In FPGA-Based Emulation Systems"인 미국 가특허 출원 제63/124,332호에 대한 우선권을 주장한다. 전술한 것의 내용은 그 전체가 본 명세서에 참조로 포함된다.
기술 분야
본 개시내용은 필드 프로그래머블 게이트 어레이(field programmable gate array; FPGA)를 이용하여 테스트 중인 설계(design under test; DUT)를 에뮬레이트하는 것에 관한 것으로, 특히, 에뮬레이션을 위해 DUT를 컴파일할 때 DUT의 조합 경로들(combinatorial paths)의 거동 양상들을 결정하는 것에 관한 것이다.
DUT의 조합 경로들의 지연들은 DUT의 컴파일을 가이드하는 데 사용될 수 있다. 예를 들어, 컴파일러는 배선에 대한 초기 배치 및 라우팅(placement and routing; P&R) 구성의 지연을 감소시키기 위해 FPGA들 사이의 배선 또는 FPGA 내의 배선의 특정 P&R을 결정할 수 있다. 종종, 조합 경로의 진정한 지연은 컴파일러가 DUT의 컴파일을 완료한 후에만 알려진다. 종래의 해결책은 모든 조합 경로들에 대해 단일 지연 추정치를 사용하는 것일 수 있다. 그러나, 이러한 추정 방법은 종종 너무 크거나 너무 작은 지연을 초래하여, 컴파일러들이 컴파일된 DUT에서 진정한 중요 지연들을 간과하게 한다. 이는 부정확하게 결정된 지연들에 대해 낭비된 컴파일러에서의 처리 자원들의 비용 및 에뮬레이션의 저속화를 초래한다.
지연 추정 시스템은 에뮬레이션 시스템에 대한 DUT의 지연을 추정한다. 예를 들어, DUT가 에뮬레이션 시스템에 의해 에뮬레이트되기 전에, 지연 추정 시스템은 DUT의 컴파일 동안 및 에뮬레이션 전에 DUT의 조합 경로의 지연을 추정한다. 지연 추정 시스템은 DUT의 로직 블록들, 및 로직 블록들 중 하나 이상을 연결하는 조합 경로를 수신한다. 시스템은 조합 경로를 나타내는 피쳐 벡터에 지연 모델을 적용하고, 여기서 지연 모델은 조합 경로의 지연을 결정할 수 있다. 시스템은 결정된 지연을 이용하여 타이밍 그래프를 생성하고 그 타이밍 그래프를 컴파일러에 제공하여 DUT의 배치 및 라우팅을 수행한다.
지연 추정 시스템은 컴파일된 DUT들의 조합 경로들 및 이들 조합 경로들의 측정된 지연들을 이용하여 트레이닝 데이터 세트를 생성함으로써 지연 모델을 트레이닝할 수 있다. 그 다음, 시스템은 생성된 트레이닝 세트를 사용하여 지연 모델을 트레이닝한다. 지연 추정 시스템은 지연 모델을 이용하여 그것이 이전에 지연을 결정했던 조합 경로의 측정된 지연을 수신하고(예를 들면, DUT가 컴파일된 후에 측정된 지연을 수신하고) 조합 경로 및 수신되고 측정된 지연을 이용하여 생성되는 또 다른 트레이닝 데이터 세트를 이용하여 지연 모델을 재트레이닝함으로써 지연 모델을 재트레이닝할 수 있다. 다른 트레이닝 데이터 세트를 이용하여 지연 모델을 재트레이닝하기 위하여, 지연 추정 시스템은 지연 추정 모델로 입력된 피쳐 벡터들의 차원들에 적용된 가중치들을 조절할 수 있다. 시스템은 조정된 가중치들, 조합 경로, 및 측정된 지연을 사용하여 다른 트레이닝 데이터 세트를 생성할 수 있다.
지연 추정 시스템은 지연 모델이 적용되는 피쳐 벡터를 생성할 수 있다. 피쳐 벡터는 조합 경로 상의 로직 레벨들의 수, 조합 경로 상의 와이어들의 전체 계층 거리, 조합 경로 상의 와이어들의 팬아웃들의 합, 조합 경로의 타이밍 경로 타입, 조합 경로가 걸쳐 이어지는 FPGA들의 레지스터 프리미티브 필 레이트(register primitive fill rate), 및 FPGA들의 룩업 테이블(look-up-table; LUT) 프리미티브 필 레이트 중 적어도 하나를 이용하여 생성될 수 있다.
지연 추정 시스템은 추정된 지연을 이용하여 임계 경로(critical path)의 결정을 가능하게 한다. 일 예에서, 하나의 조합 경로는 다수의 FPGA들(예를 들어, 3개의 FPGA들)에 걸쳐 이어지고 지연 추정 시스템에 의해 결정된 지연을 가지며, 다른 조합 경로는 다른 수의 FPGA들(예를 들어, 2개의 FPGA들)에 걸쳐 이어지고, 지연 추정 시스템에 의해 또한 결정된 지연을 갖는다. 지연 추정 시스템은 2개의 FPGA에 걸쳐 이어지는 조합 경로의 지연이 3개의 FPGA에 걸쳐 이어지는 조합 경로의 지연보다 크다고 결정할 수 있고, 이에 응답하여, 2개의 FPGA에 걸쳐 이어지는 조합 경로가 임계 경로인 반면 다른 것은 그렇지 않다고 결정할 수 있다. 그 후 컴파일러는 임계 경로가 아닌 조합 경로에 할당된 시분할 다중화(time-division multiplexing; TDM) 비율보다 큰 TDM 비율을 임계 경로에 할당할 수 있다.
일부 실시예들에서, 지연 추정 시스템은 FPGA들에 걸쳐 DUT를 분할(partition)(예를 들어, DUT의 회로 설계를 분할)하고, 조합 경로 상에 연결되는 회로 설계의 로직 블록들 중 하나 이상을 식별할 수 있다. 지연 추정 시스템은 (예를 들어, FPGA들에 걸쳐) 회로 설계를 분할하기 위해 생성된 타이밍 그래프 또는 이전에 생성된 타이밍 그래프를 사용할 수 있다. 일부 실시예들에서, 지연 추정 시스템에 의해 추정된 지연은 조합 경로의 와이어 지연일 수 있다. 타이밍 그래프를 생성하기 위해, 지연 추정 시스템은 조합 경로의 프리미티브 지연을 결정하고, 결정된 프리미티브 지연 및 추정된 와이어 지연(예를 들어, 프리미티브 지연과 와이어 지연의 합)을 이용하여 총 조합 경로 지연을 결정할 수 있다. 그 후 지연 추정 시스템은 DUT의 로직 블록들을 연결하는 각각의 조합 경로들에 대한 총 조합 경로 지연들을 포함하는 타이밍 그래프를 생성할 수 있다.
다른 양태들은 컴포넌트들, 디바이스들, 시스템들, 개선들, 방법들, 프로세스들, 애플리케이션들, 컴퓨터 판독가능 매체들, 및 상기한 것 중의 임의의 것에 관련된 다른 기술들을 포함한다.
본 개시내용은 아래에 주어지는 상세한 설명으로부터 그리고 본 개시내용의 실시예들의 첨부 도면들로부터 더 충분히 이해될 것이다. 도면들은 본 개시내용의 실시예들의 지식 및 이해를 제공하기 위해 사용되며, 본 개시내용의 범위를 이러한 특정 실시예들로 제한하지 않는다. 게다가, 도면들이 꼭 축척대로 그려져 있는 것은 아니다.
도 1은 일 실시예에 따른, DUT를 컴파일하기 위한 프로세스의 블록도를 나타낸다.
도 2는 일 실시예에 따른, FPGA들에 걸쳐 분할된 DUT를 도시한다.
도 3은 일 실시예에 따른, 지연 추정 시스템의 블록도를 도시한다.
도 4는 일 실시예에 따른, 지연 추정치들을 이용하여 DUT를 컴파일하기 위한 프로세스의 블록도를 나타낸다.
도 5는 일 실시예에 따른, 지연 추정 시스템의 지연 모델을 트레이닝하기 위한 프로세스의 블록도를 나타낸다.
도 6은 일 실시예에 따른, 지연 추정 시스템에 의해 결정된 지연 추정치들을 이용하여 DUT를 컴파일하기 위한 프로세스의 블록도를 나타낸다.
도 7은 컴파일된 DUT의 경로들의 측정된 지연들을 지연 추정 시스템을 이용한 경로들의 추정된 지연들과 비교한 실험 결과들을 도시한다.
도 8은 일 실시예에 따른, 지연 추정 시스템에 의해 결정된 지연 추정치들을 이용하여 P&R에 대한 타이밍 그래프를 결정하기 위한 프로세스의 흐름도를 도시한다.
도 9는 본 개시내용의 일부 실시예들에 따른 예시적인 에뮬레이션 시스템의 도면을 도시한다.
도 10은 본 개시내용의 실시예들이 동작할 수 있는 예시적인 컴퓨터 시스템의 도면을 도시한다.
본 개시내용의 양태들은 에뮬레이션 시스템들에 대한 머신 러닝 지연 추정에 관한 것이다. 에뮬레이션을 위해 DUT를 컴파일하기 위한 컴파일 워크플로우는 분할, 배치 및 라우팅, 및 컴파일을 포함하는 단계들(phases)로 나누어질 수 있다. 이들 단계들 중 하나 이상은 타이밍 기반일 수 있다. 예를 들어, 분할된 FPGA들의 배치 및 라우팅은 하나의 레지스터로부터 다른 레지스터로의 신호들의 타이밍(예를 들어, 지연들)에 기초하여 결정될 수 있다. 신호들의 타이밍은 FPGA들이 컴파일된 후에 측정될 수 있고, 시스템의 최종 에뮬레이션 주파수 성능은 컴파일된 DUT에서 통신되는 신호들과 연관된 지연들이 이용가능할 때 결정될 수 있다. 그러나, 이것은 지연들이 이용 가능하기 전에 필요한 경우에 교차 의존성을 생성한다.
이러한 교차 의존성을 해결하기 위해, 지연이 추정될 수 있다. 본 명세서에 설명된 지연 추정 시스템은 머신 러닝을 이용하여 조합 경로 지연을 예측하고 컴파일 워크플로우 단계들 동안 타이밍 안내를 제공한다. 지연 추정 시스템은 DUT의 로직 블록들, 및 로직 블록들 중 하나 이상을 연결하는 조합 경로를 수신한다. 예를 들어, 컴파일러에 의해 수행되는 분할 단계 이후에, 지연 추정 시스템은 하나 이상의 FPGA들에 걸쳐 컴파일러에 의해 분할되는 바와 같은 2개 이상의 로직 블록들을 연결하는 조합 경로를 수신할 수 있다. 시스템은 조합 경로를 나타내는 피쳐 벡터에 지연 모델을 적용하고, 여기서 지연 모델은 조합 경로의 지연을 결정할 수 있다. 피쳐 벡터의 피쳐들은 서로 직교할 수 있고, 하나의 피쳐의 값은 다른 피쳐의 값에 의존하지 않는다. 지연 모델은 머신 러닝 모델일 수 있다. 시스템은 결정된 지연을 사용하여 타이밍 그래프를 생성하고, 컴파일 워크플로우 단계들(예를 들어, DUT의 배치 및 라우팅)을 수행하기 위해 컴파일러에 타이밍 그래프를 제공한다.
이 머신 러닝 접근법은 DUT 내의 조합 경로의 지연이 추정되는 정확도의 증가, 지연들의 정확도가 증가함에 따라 둘 다 개선되는(즉, 컴파일된 DUT를 에뮬레이트할 때 에뮬레이터에 의해 요구되는 처리 사이클들을 감소시키는) 컴파일러 분할 및 P&R로 인해 DUT가 에뮬레이트되는 속도의 증가, 및 DUT 내의 조합 경로의 지연을 추정하기 위한 처리 자원들의 소비의 감소를 허용한다.
도 1은 일 실시예에 따른, DUT를 컴파일하기 위한 프로세스(100)의 블록도를 나타낸다. 프로세스(100)는 DUT를 컴파일하기 위한 프론트엔드 및 백엔드 컴파일 워크플로우들 모두를 포함할 수 있다. 컴파일 워크플로우들의 적어도 일부는 본 명세서에서 설명된 지연 추정 시스템 또는 호스트 시스템(예컨대, 도 9에서 도시된 바와 같은 호스트 시스템의 컴파일러)에 의해 수행될 수도 있다. 지연 추정 시스템은 호스트 시스템의 컴포넌트일 수 있다. 지연 추정 시스템은 도 3의 설명에서 더 설명된다.
백엔드 컴파일 워크플로우는 3 단계로 나누어질 수 있다. 제1 백엔드 단계에서, 사용자 설계는 네트리스트들(netlists)의 다수의 서브세트들로 나누어지며, 각각의 네트리스트는 타겟 FPGA의 사이즈에 맵핑되고 피팅될 수 있다. 본 명세서에서 "테스트 중인 설계" 또는 "DUT"라고도 하는 사용자 설계는 네트리스트들의 서브세트들에 걸쳐 나누어지므로, DUT는 다양한 FPGA들에 걸쳐 분할된다. 제1 백엔드 단계는 "분할" 단계일 수 있다. 제1 백엔드 단계는 타이밍 기반일 수 있다(예를 들어, DUT의 조합 경로들의 추정된 지연들은 DUT가 FPGA들에 걸쳐 어떻게 분할되는지를 결정하기 위해 사용된다). 사용자 설계는 DUT의 적어도 일부일 수 있다. 제1 백엔드 단계는 컴파일러의 타이밍 기반 분할 시스템에 의해 수행될 수 있다. 타이밍 기반 분할 시스템은, 사용자 및 타이밍 제약, 하드웨어 및 펌웨어 구성, 및 사용자 설계의 레지스터-전송 레벨(RTL) 파일(예를 들어, DUT의 네트리스트)을 이용하여 생성되는 프론트엔드 처리 단계의 결과를 수신할 수 있다. 타이밍 기반 분할 시스템은 DUT가 FPGA들에 걸쳐 어떻게 분할되는지를 결정하기 위해 타이밍 그래프 내에서 지연 추정치들을 수신할 수 있다. 분할된 DUT는 제2 백엔드 단계에서 사용된다.
제2 백엔드 단계에서, 네트리스트들의 각각의 서브세트는 특정 물리적 FPGA 위치에 배치되고 연결들은 FPGA들 사이에서 라우팅된다. 제2 백엔드 단계는 "배치 및 라우팅"(P&R) 단계일 수 있다. 제2 백엔드 단계는 타이밍 기반일 수 있다(예를 들어, DUT의 조합 경로들의 추정된 지연들이 FPGA들 사이의 P&R에서 사용된다). 제2 백엔드 단계는 제1 백엔드 단계에 후속하고 제3 백엔드 단계에 선행할 수 있다. 제2 백엔드 단계는 컴파일러의 타이밍 기반 시스템 P&R 시스템에 의해 수행될 수 있다. 타이밍 기반 시스템 P&R 시스템은 제1 백엔드 단계로부터 분할된 DUT를 수신하고 타이밍 그래프 내에서 추정치들을 지연시켜 FPGA들이 어떻게 서로 간에 배치되고 라우팅되는지를 결정할 수 있다.
제3 백엔드 단계에서, 네트리스트들의 분할된 서브세트들은 컴파일러에 전송되고, 컴파일러는 FPGA들을 컴파일한다(예를 들어, FPGA들 각각 내에서 P&R을 수행함). 또한, 타이밍 기반 시스템 P&R 시스템에 의해 도입된 소켓 로직이 컴파일러에 제공될 수 있다. 제3 백엔드 단계는 "FPGA 컴파일" 단계일 수 있다. 제3 백엔드 단계는 또한 타이밍 기반일 수 있다(예를 들어, DUT의 조합 경로들의 추정된 지연들이 FPGA-레벨 P&R에서 사용된다). 일부 실시예들에서, 제3 백엔드 단계에서 FPGA P&R이 완료된 후에, 컴파일된 FPGA들의 글로벌 타이밍 분석이 수행될 수 있고 FPGA들 내의 조합 경로들의 측정된 지연들이 글로벌 데이터베이스에 송신될 수 있다.
3-단계 백엔드 워크플로우의 일부 실시예들에서, 타이밍 그래프는 제3 백엔드 단계에서의 FPGA P&R이 완료된 후에 획득된 측정된 지연들을 사용하여 생성된다. 그러나, 이것은 제1 및 제2 단계들이 그들의 시간 기반 동작들에서 지연들을 사용할 수 없는 교차 의존성을 생성할 수 있는데, 그 이유는 지연들이 제3 단계의 종료까지 이용 가능하지 않기 때문이다. 일부 실시예들에서, 교차 의존성을 풀기 위해, 고정 지연 추정치(예를 들어, 보수적인 고정 지연) 또는 로직 레벨 카운트 기반 예측기가 사용될 수 있다. 그러나, 이러한 솔루션들은 낮은 정확도로 진정한 지연을 추정할 수 있다. 결국, 이것은 DUT의 부정확한 조합 경로들을 최적화하도록 컴파일러의 백엔드 시스템들을 잘못 유도할 수 있다. 개선된 정확도를 위해, 지연 모델은 제1 및/또는 제2 백엔드 단계에서 얻어지는 데이터를 이용하여 지연을 추정하는 데 이용될 수 있다. 지연 모델은 머신 러닝 모델일 수 있다. 지연 모델은 지연들이 추정되는 DUT에 특정한 데이터를 설명하기 때문에, 지연 모델은 증가된 정확도로 조합 경로 지연을 추정할 수 있고, 컴파일러의 백엔드 시스템들에 대한 타이밍 안내를 개선할 수 있다. 이러한 방식으로, 지연 모델을 구현하는 지연 추정 시스템은 전술한 교차 의존성에 의해 제한되지 않고, 제3 백엔드 단계가 수행되기 전에 타이밍 기반 분할 및 P&R을 수행할 수 있다.
제1 백엔드 단계에서의 분할 동안, DUT의 글로벌 네트리스트는 다수의 FPGA 크기의 클러스터들로 나누어질 수 있고, 글로벌 타이밍 그래프는 또한 상이한 서브-파티션들에 걸쳐 확산된다. 제1 백엔드 단계에서 분할한 후, 글로벌 타이밍 그래프를 형성하는 타이밍 노드들은 상이한 FPGA들로 나누어질 수 있다. 각각의 타이밍 노드는 DUT의 조합 경로에 대응하는 타이밍 경로 또는 타이밍 아크를 나타낼 수 있다. 타이밍 경로는 다수의 FPGA들에 걸쳐 나누어질 수 있고, 따라서, 다수의 타이밍 경로들로 나누어질 수 있다. 다수의 FPGA들에 걸쳐 나누어지는 경로들의 예들이 도 2에 도시되어 있다. FPGA들에 걸친 그리고 FPGA 내의 타이밍 경로의 지연은 수 나노초 내지 수백 나노초의 범위일 수 있다. 지연은 FPGA 크기, 네트리스트 계층구조, 및 FPGA 필 레이트들과 같은 인자들에 의존할 수 있다. 내부 FPGA 지연은 에뮬레이션을 통해 DUT의 성능 및 크기를 더 잘 최적화하기 위해 타이밍 기반 분할 및/또는 P&R 시스템들에 유용하다.
초기 백엔드 단계들에서 더 정확한 지연 추정을 제공함으로써, 지연 추정 시스템은 컴파일러가 그 지연들이 진정한 임계 경로들의 지연들만큼 크지 않은 부정확하게 플래그된 임계 경로들이 아니라, DUT의 진정한 임계 경로들을 최적화하는 것에 집중할 수 있게 한다. 따라서, 지연 추정 시스템은 내부 FPGA 지연들을 조정하기 위한 수동 튜닝 또는 추가적인 반복들 없이 DUT 에뮬레이션을 개선할 수 있다(예를 들어, 최적화된 임계 경로들은 에뮬레이션의 속도가 증가하게 한다). 또한, 정확도가 낮은 초기 결과들로 인해 에뮬레이션을 재수행하는 것이 필요한 빈도를 감소시키는 것은 또한 에뮬레이션 시스템에 의해 소비되는 처리 자원들을 감소시킨다. 더 높은 에뮬레이션 주파수, 또는 에뮬레이션 클록 주파수는 사용자 설계들의 테스트 프로세스에서 더 빠른 턴어라운드를 가능하게 하고, 더 많은 커버리지를 허용하고, 비용을 낮춘다. 예를 들어, 더 높은 에뮬레이션 주파수는 주어진 에뮬레이션 시간 내에 더 많은 테스트 벤치들이 실행될 수 있게 하기 때문에 커버리지가 증가할 수 있다. 또한, 일부 설계 결함들은 긴 에뮬레이션 시간 후에 나타날 수 있다. 더 높은 에뮬레이션 주파수의 경우, 설계 결함을 찾는 데 소비되는 시간의 비용이 감소할 수 있는데, 그 이유는 더 높은 에뮬레이션 주파수가 더 느린 에뮬레이션 주파수보다 더 빠르게 결함을 갖는 클록 사이클에 도달할 수 있기 때문이다. 비용이 감소되는 또 다른 방식은 에뮬레이션 시스템이 특정 작업 스케줄링에 따라 다수의 에뮬레이션 작업들에 의해 공유될 수 있고, 작업이 보다 빠르게 완료될 수 있는 경우, 부가의 작업들이 스케줄링될 수 있다는 것이다. 스케줄링 큐에서 다수의 설계들을 처리하기 위해 보다 작은 에뮬레이션 시스템이 사용될 수 있고; 따라서, 다수의 에뮬레이션 작업들에 의해 공유되는 보다 작은 에뮬레이션 시스템을 사용함으로써 처리 비용이 감소된다.
도 2는 일 실시예에 따른, FPGA들에 걸쳐 분할된 DUT(200)를 도시한다. DUT(200)는 FPGA들(A-C)에 걸쳐 분할되고, 레지스터들(R1-R4), 로직 블록들(211, 212, 213, 221, 및 222), 및 조합 경로들(210 및 220)을 포함한다. 조합 경로(210)는 레지스터(R1)의 "Q" 출력에서 시작하고 - 이는 본 명세서에서 표기법 "R1.Q"를 사용하여 지칭됨 -, 레지스터(R1)의 "D" 입력 또는 R4.D에서 끝난다. 조합 경로(210)는 로직 블록들(211, 212, 및 213)을 포함한다. 로직 블록은 FPGA 프리미티브들(예를 들어, 4-입력 LUT("LUT4"), 디지털 신호 프로세서(digital signal processor; DSP)들 등) 및 와이어들을 포함할 수 있고, 이들 모두는 로직 블록이 연결되는 조합 경로의 지연에 기여할 수 있다. 조합 경로(210)는 포트들 pA3 및 pB3에서 FPGA A 및 FPGA B에 걸쳐 이어진다. 조합 경로(210)는 포트들 pB4 및 pC4에서 FPGA B 및 FPGA C에 걸쳐 이어진다. 조합 경로(220)는 R2.Q에서 시작하고 R3.D에서 끝난다. 조합 경로(220)는 로직 블록들(221 및 222)을 포함한다. 조합 경로(220)는 포트들 pA1 및 pB1에서 FPGA A 및 FPGA B에 걸쳐 이어진다.
DUT(200)는 FPGA들 A-C로 분할되고, 따라서, DUT의 글로벌 타이밍 그래프는 또한 다수의 FPGA들에 걸쳐 나누어진다. 조합 경로들 및 대응하는 타이밍 경로들은 FPGA 내에 완전히 포함될 수 있다. 예를 들어, R1.Q로부터 R2.D로의 조합 경로는 FPGA A 내에 완전히 포함된다. 조합 경로들은 다수의 FPGA들에 걸쳐 나누어질 수 있다. 예를 들어, R2.Q로부터 R3.D로의 조합 경로는 FPGA A 및 B에 걸쳐 나누어진다. 두 가지 경우들 모두에서, 지연 추정 시스템은 조합 경로를 순회(traverse)하고, 글로벌 타이밍 그래프의 특정 타이밍 노드들에 상관되는 조합 경로 상의 로직 블록들을 획득할 수 있다. 지연 추정 시스템은 조합 경로 상의 로직 블록들, 및 조합 경로 상의 지연을 기술하는 데 이용되는 데이터를 추출할 수 있다. 그러한 데이터는 조합 경로 상의 로직 레벨들의 수, 조합 경로 상의 와이어들의 총 계층적 거리, 조합 경로 상의 와이어들의 팬아웃들의 합, 조합 경로의 타이밍 경로 타입, 조합 경로가 걸쳐 이어지는 하나 이상의 필드 프로그래머블 게이트 어레이(FPGA)의 레지스터 프리미티브 필 레이트, FPGA들의 룩업 테이블(LUT) 프리미티브 필 레이트, 로직 블록의 프리미티브 또는 와이어링의 지연과 관련된 임의의 적절한 피쳐, 또는 이들의 조합을 포함할 수 있다.
지연 추정 시스템은 글로벌 타이밍 분석을 위한 타이밍 경로 지연들을 추정하기 위해 조합 경로, 조합 경로 상의 추출된 로직 블록들, 및 추출된 데이터를 사용할 수 있다. 예를 들어, R2.Q로부터 R3.D까지의 조합 경로(220)는 FPGA A 및 FPGA B로 나누어졌고, 지연 추정 시스템은 (예를 들어, 지연 모델을 사용하여) R2.Q로부터 pA1까지의 지연 및 pB1로부터 R3.D까지의 지연을 개별적으로 추정할 수 있다. 추정된 지연은 그 후 글로벌 타이밍 그래프에 주석이 달릴 수 있다.
도 3은 일 실시예에 따른 지연 추정 시스템의 블록도(300)를 도시한다. 블록도(300)는 지연 추정 시스템(310), 호스트 시스템(320), 에뮬레이션 시스템(330), 및 네트워크(340)를 포함한다. 지연 추정 시스템(310)은 네트워크(340)를 통해 호스트 시스템(320)에 통신가능하게 결합되는 원격 컴퓨팅 디바이스 또는 서버일 수 있다. 호스트 시스템(320)은 DUT 네트리스트 데이터베이스(311)로부터의 네트리스트를 사용하여 DUT를 컴파일하기 위한 컴파일러(321)를 포함하는 컴퓨팅 디바이스일 수 있다. 호스트 시스템(320)은 (예를 들어, 도 9의 설명에서 설명된 바와 같이) 로컬 네트워크 연결을 통해 에뮬레이션 시스템(330)에 통신가능하게 결합될 수 있다. 지연 추정 시스템(310)은 DUT 네트리스트 데이터베이스(311) 및 경험적 지연 데이터베이스(312)와 같은 데이터베이스들을 포함할 수 있다. 대안으로서 또는 추가로, 데이터베이스는 지연 추정 시스템(310)으로부터 원격지에(예를 들어, 네트워크(340)를 통해 지연 추정 시스템(310) 및 호스트 시스템(320)에 통신가능하게 결합된 상이한 서버에) 위치할 수 있다. 지연 추정 시스템은 피쳐 벡터 생성 엔진(313), 모델 트레이닝 엔진(314), 지연 모델(315), 및 타이밍 그래프 생성 엔진(316)과 같은 소프트웨어 모듈들을 포함한다. 블록도(300)는 도 3에 도시된 것보다 더 많거나, 상이하거나, 더 적은 컴포넌트들을 가질 수 있다.
소프트웨어 모듈은 비일시적 컴퓨터 판독가능 저장 매체(예를 들어, 디스크 또는 메모리와 같은 저장 디바이스)에 저장될 수 있고 하나 이상의 처리 유닛들(예를 들어, 프로세서, 제어기, 상태 머신)에 의해 실행가능할 수 있는 실행가능 프로그램 코드를 포함할 수 있다는 점에 유의한다. 프로그램 코드는 설명된 기능에 대응하는 특수 목적 디바이스를 제공하기 위해 처리 유닛과 함께 패키징될 수 있다. 게다가, 엔진이 또한 비일시적 컴퓨터 판독가능 저장 매체(예컨대, 디스크 또는 메모리와 같은 저장 디바이스)에 저장되고 하나 이상의 처리 유닛들(예컨대, 프로세서, 제어기, 상태 머신)에 의해 실행가능할 수 있는 실행가능 프로그램 코드로 이루어져 있을 수 있다는 것에 유의해야 한다. 프로그램 코드는 설명된 기능에 대응하는 특수 목적 디바이스를 제공하기 위해 처리 유닛과 함께 패키징될 수 있다.
DUT 네트리스트 데이터베이스(311)는 컴파일러(321)에 의한 컴파일 및 에뮬레이션 시스템(330)에 의한 에뮬레이션을 위해 DUT들의 네트리스트들을 저장한다. 지연 추정 시스템(310)은 피쳐 벡터 생성 엔진(313)을 통해 피쳐 벡터를 결정하기 위해, 모델 트레이닝 엔진(314)에 의해 지연 모델(315)을 트레이닝하기 위한 트레이닝 데이터를 결정하기 위해, 네트리스트의 일부를 나타내는 조합 경로의 지연을 추정하기 위한 지연 모델(315)에 입력하기 위해, 또는 타이밍 그래프 생성 엔진(316)을 통해 네트리스트의 글로벌 타이밍 그래프에 주석을 달기 위해 데이터베이스(311) 내의 네트리스트들에 액세스할 수 있다. DUT는 (예를 들어, 도 1에 도시된 바와 같이) 프론트엔드 처리 단계 동안 FPGA 프리미티브들에 맵핑될 수 있다. DUT 네트리스트 데이터베이스(311)는 또한 시스템(310)에 의한 백엔드 단계들 또는 지연 추정을 위한 입력으로서 제공될 맵핑된 프리미티브들 및 와이어들을 기술하는 데이터를 저장할 수 있다.
경험적 지연 데이터베이스(312)는 DUT가 분할되는 FPGA(들)를 컴파일한 후에 측정된 지연들을 저장한다. 이들 측정된 지연들은 모델 트레이닝 엔진(314)에 의해 (예를 들어, 타이밍 경로를 따라 프리미티브들 및 순회된 로직 블록들을 이용하여) 지연 모델(315)을 트레이닝 및 검증하는 데 이용될 수 있다. 도시되지는 않았지만, 지연 추정 시스템(310)은 지연 모델(315)에 의해 출력된 추정된 지연들을 저장하기 위한 데이터베이스를 포함할 수 있다. 저장된 지연들은 추정된 지연들로 주석이 달린 네트리스트 또는 로직 블록들을 포함하는 글로벌 타이밍 그래프를 나타내는 데이터 구조에 있을 수 있다. 지연 추정 시스템(310)은 컴파일 동안 DUT의 분할 및/또는 P&R을 최적화하기 위해 데이터베이스(312)에 저장된 추정된 지연들을 호스트 시스템(320)에 제공할 수 있다.
피쳐 벡터 생성 엔진(313)은 조합 경로에 관련된 데이터를 나타내는 피쳐 벡터를 생성하고, 여기서 피쳐 벡터는 조합 경로의 지연을 추정하기 위한 지연 모델(315)에 입력된다. 피쳐 벡터 생성 엔진(313)은 또한 모델 트레이닝 엔진(314)에 의해 트레이닝 데이터로서 사용하기 위한 피쳐 벡터들을 생성할 수 있다. 피쳐 벡터 생성 엔진(313)은 조합 경로의 전체 지연에 기여하는 2개의 성분인 전체 프리미티브 지연들 및 전체 와이어 라우팅 지연들을 나타내는 벡터들을 생성할 수 있다. 피쳐 벡터는 하나 이상의 차원들 또는 피쳐들을 포함할 수 있으며, 각각의 차원은 그의 지연을 결정하는 것과 관련된 조합 경로의 특성을 나타내는 값이다. 특성들은 조합 경로 상의 로직 레벨들의 수, 경로 상의 계층적 거리, 총 팬아웃, 타이밍 경로 타입, FPGA의 레지스터 프리미티브 필 레이트, 및 FPGA의 LUT 프리미티브 필 레이트를 포함할 수 있다. 피쳐 벡터들의 차원들이 직교하도록(예컨대, 차원들의 값들이 서로 독립적이도록) 특성들이 선택될 수 있다. 3차원 피쳐 벡터의 일 예에서, 피쳐 벡터 생성 엔진(313)은 조합 경로 상의 와이어들의 총 팬아웃, 조합 경로가 걸쳐 이어지는 FPGA들 중 하나 이상의 FPGA의 레지스터 프리미티브 필 레이트, 및 조합 경로 상의 로직 레벨들의 수를 나타내는 3개의 값의 피쳐 벡터를 생성한다. 피쳐 벡터 생성 엔진(313)에 의해 생성된 피쳐 벡터에 포함된 피쳐들은 컴파일러가 DUT의 분할 단계(예를 들어, 백엔드 단계 1)를 완료한 후에 획득될 수 있다. 피쳐 벡터들 내에 포함될 수 있는 상이한 피쳐들은 아래에 더 상세히 설명된다.
피쳐 벡터 생성 엔진(313)은 조합 경로에서의 각각의 프리미티브의 지연들의 합에 기초하여 프리미티브 지연들을 계산할 수 있다. 각각의 프리미티브의 지연은 안정적이거나 일정할 수 있다. 예를 들어, 글로벌 클록 버퍼(global clock buffer; BUFG), DSP, 또는 랜덤 액세스 메모리(RAM)와 같은 프리미티브에 대해, 피쳐 벡터 생성 엔진(313)은 분할 단계에서 알려져 있는 입력 및 출력 핀 ID 조합이 주어지면 일정한 프리미티브 지연을 결정할 수 있다. 일부 실시예들에서, 프리미티브 지연은 (예를 들어, 평균 지연을 사용하여) 추정될 수 있다. 예를 들어, LUT와 같은 프리미티브의 경우, 핀 ID가 분할 단계에서 알려지더라도, 핀 ID들은 컴파일의 후속 단계 동안 스와핑될 수 있다. 따라서, 통계 평균값은 LUT에 대한 프리미티브 지연을 추정하는 데 사용될 수 있다.
피쳐 벡터 생성 엔진(313)은 조합 경로에서 와이어 라우팅 지연들을 계산할 수 있다. 일부 실시예들에서, 각각의 와이어의 지연들은 와이어마다 다를 수 있다. 그러나, 조합 경로를 기술하고 총 와이어 지연에 영향을 미치는 인자를 포착하는 데이터는 와이어 지연들을 추정하는 데 이용될 수 있다. 이전에 설명된 바와 같이, 데이터는 (1) 조합 경로 상의 로직 레벨들의 수, (2) 조합 경로 상의 와이어들의 총 계층적 거리, (3) 조합 경로 상의 와이어들의 팬아웃들의 합, (4) 조합 경로의 타이밍 경로 타입, (5) 조합 경로가 걸쳐 이어지는 FPGA들 중 하나 이상의 FPGA의 레지스터 프리미티브 필 레이트, (6) 하나 이상의 FPGA의 LUT 프리미티브 필 레이트, 총 와이어 지연에 영향을 미치는 임의의 적절한 데이터, 또는 이들의 조합을 포함할 수 있다. 데이터는 서로 독립적일 수 있다. 위에서 식별된 6개의 피쳐들 중 임의의 2개는 서로 직교할 수 있다(예를 들어, 조합 경로의 총 팬아웃은 타이밍 경로 타입에 의존하지 않는다). 피쳐 벡터는 서로 직교하는 차원들로 구성될 수 있기 때문에, 지연 추정 시스템(310)은 (예를 들어, 지연을 결정하기 위해 중복되는 데이터에 대한 처리 자원들의 사용을 회피함으로써) 지연이 추정되는 처리 효율을 증가시킨다.
조합 경로 상의 로직 레벨들의 수는 조합 경로의 로직 길이를 나타낼 수 있으며, 각각의 와이어 또는 프리미티브는 하나의 로직 레벨이다. 조합 경로의 총 팬아웃은 조합 경로 내의 와이어들의 팬아웃 성질을 나타낼 수 있다. 총 팬아웃은 조합 경로 내의 모든 와이어들 상의 팬아웃들의 합일 수 있다. 레지스터 프리미티브 필 레이트 및 LUT 프리미티브 필 레이트는 FPGA 사용 피쳐들이고, 이는 라우팅 지연들에 대한 FPGA 사용 또는 혼잡 영향의 간접 지표들이다. 조합 경로의 타이밍 경로 타입은 경로 타입들 사이의 차이를 나타낸다(예를 들어, 조합 경로 타입이 데이터 경로 타입보다는 클록 경로 타입임을 표시함).
경로 상의 총 계층적 거리는 조합 경로를 따른 와이어들의 총 계층적 거리를 나타낸다. 총 계층적 거리는, 와이어 드라이버 또는 로드 계층구조와 컴파일 워크플로우의 나중 스테이지를 향한 FPGA 배치에서의 물리적 거리 사이의 상관관계에 관련된다. 구체적으로, 드라이버-판독기 쌍을 갖는 각각의 와이어에 대해, 계층적 거리는 다음과 같이 정의될 수 있다:
여기서 max_diff_hier는 드라이버 및 로드 인스턴스들의 최대 상이한 계층 번호이고 common_hier는 드라이버 및 로드 인스턴스들의 공통 계층이다.
경로 상의 총 계층적 거리를 결정하는 일 예에서, 하나의 와이어는 2개의 인스턴스, 즉 "top/a/b/c/d/e"의 드라이버 인스턴스 및 "top/a/b/c/f/g/h"의 판독기 인스턴스를 연결한다. 공통 계층은 "top/a/b/c"이고, 상이한 계층은 "d/e" 및 "f/g/h"이다. 2개의 인스턴스의 공통 계층 common_hier는 4이다. 2개의 인스턴스의 최대 상이한 계층 번호는 상이한 계층들 중에서 더 큰 수로서 정의되며, 이 예에서는 max(d/e, f/g/h) 또는 3이다. hier_dist_max는 따라서 3/(3+4) = 3/7이다. 총 계층적 거리는 조합 경로 상의 각각의 와이어의 hier_dist_max의 합이다. 유사하게, 최소 계층 거리는 생성된 피쳐 벡터에서 사용하기 위한 최대 계층 거리에 부가하여 또는 대안적으로 포함되는 값일 수 있다.
설계 크기, 타입, 또는 분할 결과들에 따라, 각각의 FPGA에 걸친 타이밍 경로들의 수는 클 수 있다(예를 들어, 10,000개 내지 100,000개 경로의 범위). 지연 모델을 개발하기 위해 수행된 실험에서, 42개의 다양한 크기의 설계 및 총 2.1k의 FPGA가 분석되었는데, 이는 약 9.3백만 개의 조합 경로를 초래하였고, 이들 각각은 대응하는 타이밍 경로를 갖는다. 이 실험에서, 9.3백만 개의 조합 경로들이 지연 모델에 대한 트레이닝 데이터세트를 생성하기 위해 사용되었고, 랜덤 포레스트 알고리즘이 지연 모델을 개발하기 위해 사용되었다. 가중치들은 아래의 표 1에 도시된 바와 같이, 벡터 내의 각각의 피쳐에 대해 결정되었다.
랜덤 포레스트 알고리즘이 실험에서 지연 모델을 개발하기 위해 사용되었지만, 지연 모델(315)은 선형 지원 벡터 머신(선형 SVM), 다른 알고리즘들에 대한 부스팅(예를 들어, AdaBoost), 신경망들, 로지스틱 회귀, 나이브 베이즈(na
Figure pct00003
ve Bayes), 메모리 기반 학습, 배깅 트리들(bagged trees), 결정 트리들, 부스팅된 트리들, 부스팅된 스텀프들, 지도 또는 비지도 학습 알고리즘, 또는 이들의 임의의 적절한 조합과 같은 다양한 머신 러닝 기법들을 사용할 수 있다.
모델 트레이닝 엔진(314)은 피쳐 벡터 생성 엔진(313)에 의해 생성된 피쳐 벡터들을 사용하여 지연 모델(315)을 트레이닝하고 지연 모델(315)을 검증할 수 있다. 지연 모델(315)을 트레이닝하기 위해, 모델 트레이닝 엔진(314)은 컴파일된 DUT들의 조합 경로들 및 조합 경로들의 측정된 지연들을 사용하여 제1 트레이닝 데이터 세트를 생성할 수 있다. 트레이닝 데이터는 (예를 들어, 피쳐 벡터 생성 엔진(313)에 대해 설명되는 6개의 피쳐들을 포함하는) 조합 경로에 관한 정보를 사용하여 생성되는 피쳐 벡터들일 수 있다. 피쳐 벡터들은 피쳐 벡터에 의해 표현되는 대응하는 조합 경로의 측정된 지연으로 라벨링될 수 있다. 모델 트레이닝 엔진(314)은 제1 트레이닝 데이터 세트를 이용하여 지연 모델(315)을 트레이닝할 수 있다. 모델 트레이닝 엔진(314)은 제2 트레이닝 데이터 세트를 이용하여 지연 모델(315)을 재트레이닝할 수 있다. 지연 추정 시스템(310)은 제1 트레이닝 데이터 세트를 이용하여 트레이닝된 지연 모델(315)을 이용하여 생성된 타이밍 그래프를 생성하고, 타이밍 그래프를 이용하여 DUT를 컴파일하고, 그 후에, 컴파일된 DUT의 조합 경로의 측정된 지연을 수신할 수 있다. 모델 트레이닝 엔진(314)은 조합 경로 및 후속하여 수신된 측정된 지연을 이용하여 제2 트레이닝 데이터 세트를 생성할 수 있다. 모델(315)을 재트레이닝하는 일 예에서, 모델 트레이닝 엔진(314)은 피쳐 벡터들의 차원들에 대응하는 가중치들(예컨대, 표 1에 나타낸 가중치들)을 조절한다. 모델 트레이닝 엔진(314)은 조정된 가중치들 및 조합 경로의 6개의 피쳐의 피쳐 벡터를 사용하여 제2 트레이닝 데이터 세트를 생성할 수 있고, 여기서 피쳐 벡터는 후속하여 수신된 측정된 지연으로 라벨링된다.
지연 모델(315)을 검증하는 일 예에서, 컴파일된 FPGA들의 절반 상의 조합 경로들은 트레이닝 세트로서 사용될 수 있고 나머지 조합 경로들은 검증을 위해 사용될 수 있다. 랜덤 포레스트 알고리즘은 지연 모델(315)을 검증하기 위해 R2 점수 및 제곱근 오차 평균(room mean square error; RMSE)을 결정하는 데 사용될 수 있다. 예를 들어, 실험 결과들이 도 7에 도시되어 있는 지연 모델에 대해 91%의 R2 점수 및 10416 나노초에서의 RMSE가 결정되었다.
지연 모델(315)은 컴파일 동안에 결정된 DUT의 특정한 구성(예컨대, 특정한 FPGA 파티션 또는 FPGA들의 특정한 장소 및 라우팅)에 의해 야기된 지연을 출력한다. 지연 모델(315)은 DUT의 조합 경로, 조합 경로 상의 로직 블록, 또는 이들의 조합에 대한 지연들을 출력할 수 있다. 지연 모델(315)은 와이어 지연의 추정치 또는 총 조합 경로 지연의 추정치를 출력할 수 있다. 추정된 와이어 지연을 출력하는 일 예에서, 지연 모델(315)은 조합 경로를 나타내는 피쳐 벡터를 입력으로서 수신할 수 있으며, 여기서 피쳐 벡터는 피쳐 벡터 생성 엔진(313)의 설명에서 설명되는 6개의 피쳐들을 포함한다. 다음으로, 6개의 피쳐들이 조합 경로의 와이어 지연을 나타내기 때문에, 지연 모델(315)은 추정된 와이어 지연을 출력할 수 있다. 추정된 와이어 지연은 이후 조합 경로의 프리미티브 지연과 조합되어 (예를 들어, 타이밍 그래프에 포함시키기 위한) 총 조합 경로 지연을 결정할 수 있다. 추정된 총 조합 경로 지연을 출력하는 예에서, 지연 모델(315)은 6개의 피쳐 및 조합 경로의 프리미티브 지연을 포함하는 피쳐 벡터를 입력으로서 수신할 수 있다. 7차원의 이 예시적인 피쳐 벡터를 사용하여, 지연 모델(315)은 조합 경로의 총 조합 경로 지연의 추정치를 출력할 수 있다.
타이밍 그래프 생성 엔진(316)은 DUT에 대한 타이밍 그래프를 생성할 수 있다. 타이밍 그래프는 조합 경로의 지연에 기여하는 컴포넌트들에 대응하는 타이밍 노드들을 포함할 수 있다. 예를 들어, 타이밍 그래프 생성 엔진(316)은 지연 모델(315)에 의해 출력된 로직 블록들의 추정된 지연들을 수신하고, 타이밍 그래프에서 대응하는 타이밍 노드들에 주석을 달 수 있다. 다른 예에서, 타이밍 그래프 생성 엔진(316)은 조합 경로들의 추정된 지연들을 수신하고, 타이밍 그래프에서 하나 이상의 타이밍 노드들에 대응하는 타이밍 경로들에 주석을 달 수 있다. 타이밍 그래프 생성 엔진(316)은 DUT의 로직 블록들, 및 로직 블록들 중 하나 이상을 연결하는 조합 경로를 (예를 들어, 네트리스트 데이터베이스(311)로부터 또는 컴파일러로부터) 수신할 수 있다. 타이밍 그래프 생성 엔진(316)은 조합 경로를 나타내는 피쳐 벡터에 지연 모델(315)을 적용하고, 여기서 피쳐 벡터는 피쳐 벡터 생성 엔진(313)에 의해 생성될 수 있다. 타이밍 그래프 생성 엔진(316)은 지연 모델(315)에 의해 결정된 조합 경로의 지연에 기초하여 타이밍 그래프를 생성할 수 있다.
일부 실시예들에서, 지연 추정 시스템(310)은 DUT의 진정한 임계 경로들을 결정한다. 임계 경로는 DUT의 하나 이상의 다른 조합 경로보다 더 큰 지연을 갖는 조합 경로일 수 있다. 지연 모델(315)을 적용하지 않고 결정되는 지연은 부정확할 수 있고 임계 경로들이 부정확하게 결정되게 할 수 있어서, 최소화할 자원들(예를 들어, 진정한 임계 경로 상의 지연을 감소시키기 위해 더 많은 와이어를 할당하는 시분할 멀티플렉싱(time division multiplexing; TDM) 비율을 결정하기 위한 P&R)을 필요로 하는 것으로서 컴파일러에 지연이 플래그되지 않았기 때문에, 진정한 임계 경로들은 최적화되지 않은 채로 남는다.
임계 경로들을 결정하는 예로서 도 2를 이용하면, 진정한 임계 경로는 조합 경로(220)일 수 있는 반면, 조합 경로(210)가 임계 경로인 것으로 부정확하게 결정되었을 수 있다. 이것은 조합 경로가 순회하는 FPGA들의 수에만 기초하여 지연이 결정되면 발생할 수 있다. 조합 경로(210)가 FPGA A-C를 순회하는 한편 조합 경로(220)가 FPGA A 및 B를 순회하기 때문에, 조합 경로(210)는 조합 경로(220)보다 더 많은 지연을 갖는 것으로 결정될 수 있다. 그러나, 조합 경로의 속성들(예를 들어, 로직 블록들(211-213, 221, 및 222) 내의 프리미티브들 및 와이어 지연들)을 고려하면, 지연 추정 시스템(310)은 조합 경로(220)의 지연이 조합 경로(210)의 지연보다 더 크다고 결정할 수 있다. 따라서, 진정한 임계 경로는 조합 경로(220)이다. 컴파일러는 그 다음에 지연 추정 시스템(310)에 의해 결정된 지연들을 사용하여 TDM 비율들을 그에 따라 할당할 수 있다(예를 들어, 조합 경로(210)에 할당되는 것보다 더 큰, 조합 경로(220)에 대한 TDM 비율).
네트워크(340)는 지연 추정 시스템(310)과 호스트 시스템(320)을 통신가능하게 결합하는 역할을 할 수 있다. 일부 실시예들에서, 네트워크(340)는 유선 및/또는 무선 통신 시스템들을 사용하는 로컬 영역 및/또는 광역 네트워크들의 임의의 조합을 포함한다. 네트워크(340)는 표준 통신 기술들 및/또는 프로토콜들을 사용할 수 있다. 예를 들어, 네트워크(340)는 이더넷, 802.11, 마이크로파 액세스를 위한 전세계적 상호운용성(worldwide interoperability for microwave access; WiMAX), 3G, 4G, 5G, 코드 분할 다중 액세스(code division multiple access; CDMA), 디지털 구독자 회선(digital subscriber line; DSL) 등과 같은 기술들을 사용하는 통신 링크들을 포함한다. 네트워크(340)를 통해 통신하기 위해 사용되는 네트워킹 프로토콜들의 예들은 멀티프로토콜 레이블 스위칭(multiprotocol label switching; MPLS), 전송 제어 프로토콜/인터넷 프로토콜(transmission control protocol/Internet protocol; TCP/IP), 하이퍼텍스트 전송 프로토콜(hypertext transport protocol; HTTP), 단순 메일 전송 프로토콜(simple mail transfer protocol; SMTP), 및 파일 전송 프로토콜(file transfer protocol; FTP)을 포함한다. 네트워크를 통해 교환되는 데이터는 하이퍼텍스트 마크업 언어(hypertext markup language; HTML) 또는 확장 마크업 언어(extensible markup language; XML)와 같은 임의의 적절한 포맷을 이용하여 표현될 수 있다. 일부 실시예들에서, 네트워크(340)의 통신 링크들의 전부 또는 일부는 임의의 적절한 기술 또는 기술들을 이용하여 암호화될 수 있다.
도 4는 일 실시예에 따른, 지연 추정치들을 이용하여 DUT를 컴파일하기 위한 프로세스(400)의 블록도를 나타낸다. 일부 실시예들에서, 타이밍 그래프 생성 엔진(316)은 지연 모델 없이 타이밍 그래프를 생성할 수 있다. 예를 들어, 고정된 지연 추정치(예를 들어, 보수적인 고정된 지연) 또는 로직-레벨-카운트-기반 예측기는 컴파일될 DUT에 대한 타이밍 그래프를 결정하기 위해 사용될 수 있다. 추정된 지연들은 FPGA들에 걸쳐 DUT를 분할하고, FPGA들 내에서 P&R을 수행하기 전에 FPGA들 사이에 P&R을 수행하기 위해 적용될 수 있다.
도 5는 일 실시예에 따른, 지연 추정 시스템의 지연 모델을 트레이닝하기 위한 프로세스(500)의 블록도를 나타낸다. 프로세스(500)는 도 1에 도시된 프로세스(100)와 유사하다. 프로세스(500)는 지연 추정 시스템(310)에 제공되는 경험적 지연들(510)의 추가에 있어서 상이하다. 지연 추정 시스템(310)은 DUT가 하나 이상의 FPGA에 걸쳐 컴파일된 후에 측정된 조합 경로들의 경험적 지연들(510)을 수신할 수 있다. 경험적 지연들(510)은 지연 모델(315)을 트레이닝하는 데 이용하기 위해 지연 추정 시스템(310)의 경험적 지연 데이터베이스(312)에 저장된다. 지연 모델(315)의 트레이닝은 도 3의 모델 트레이닝 엔진(314)의 설명에서 설명된다.
도 6은 일 실시예에 따른, 지연 추정 시스템(310)에 의해 결정된 지연 추정치들을 이용하여 DUT를 컴파일하기 위한 프로세스(600)의 블록도를 나타낸다. 프로세스(600)는 지연 모델(315)이 경험적 지연들(510)을 이용하여 트레이닝되는 프로세스(500)에 후속하여 발생할 수 있다. 프로세스(600)에서, 지연 추정 시스템(310)의 지연 모델(315)은 지연이 추정되는 조합 경로들에 관련된 데이터에 적용된다. 지연 추정 시스템(310)은 백엔드 컴파일 워크플로우의 분할 단계에 후속하여 데이터를 수신할 수 있고, 여기서 데이터는 FPGA들로 분할되는 DUT의 로직 블록들에 관련된 정보, FPGA 필 레이트(들), 프리미티브들, 네트리스트 계층구조, 와이어 지연들의 영향에 관련된 임의의 적합한 정보(예를 들어, 타이밍 경로 타입들, 조합 경로의 로직 레벨들의 수, 조합 경로의 계층적 거리, 레지스터 필 레이트, 또는 LUT 필 레이트), 또는 이들의 조합을 포함한다. 수신된 데이터는 피쳐 벡터 생성 엔진(313)에 의해 사용되어 지연 모델(315)에 대한 입력을 위한 피쳐 벡터를 생성할 수 있다. 지연 모델(315)은 분할된 DUT의 조합 경로에 대한 추정된 지연을 출력하며, 여기서 조합 경로는 타이밍 경로에 대응하고, 따라서 출력 지연은 또한 타이밍 경로에 대한 지연이다. 추정된 지연들은 타이밍 그래프의 타이밍 노드들 또는 경로들에 주석을 다는 지연들을 갖는 타이밍 그래프를 생성하기 위해 이용될 수 있다. 타이밍 그래프의 추정된 지연들은 새롭게 분할된 FPGA들 각각의 지연들을 감소시키기 위해 FPGA들 사이에 DUT를 재분할하는 데 사용될 수 있다. 추정된 지연들은 FPGA들 사이의 연결들에 의해 야기되는 지연들을 감소시키기 위해 FPGA들 사이에 P&R을 수행하는 데 사용될 수 있다.
도 7은 컴파일된 DUT의 경로들의 측정된 지연들과 지연 추정 시스템을 이용한 경로들의 추정된 지연들의 예들을 비교하는 실험 결과들(700)을 도시한다. 컴파일 워크플로우의 백엔드 단계들에 지연 모델을 적용하면, 컴파일 동안 DUT의 분할 및 P&R을 최적화하는 데 사용하기 위해 지연 모델에 의해 출력되는 조합 경로 지연들의 정확도로 인해, 예를 들어, 5-20%만큼 지연들을 감소시킴으로써 컴파일된 DUT의 성능을 향상시킬 수 있다. 실험의 다른 결과는 제2 백엔드 단계에서 보고된 DUT 에뮬레이션 주파수가 제3 백엔드 단계 후에 보고된 성능에 더 가깝다는 것을 보여주었다. 특히, 본 명세서에 설명된 지연 모델의 정확도는 실험 결과들(700)에 의해 도시된다. 결과들(700)은 실제 지연이 증가함에 따라 추정된 지연의 범위가 증가한다는 것을 보여준다. 그러나, 추정된 지연들은 R2 스코어가 91%이고 RMSE가 10416나노초인 실제 지연을 추적한다.
도 8은 일 실시예에 따른, 지연 추정 시스템(예를 들어, 310)에 의해 결정된 지연 추정치들을 이용하여 P&R에 대한 타이밍 그래프를 결정하기 위한 프로세스(800)의 흐름도를 도시한다. 프로세스(800)는 지연 추정 시스템(310)에 의해 수행될 수 있다. 프로세스(800)는 추가적인, 더 적은, 또는 상이한 동작들을 포함할 수 있다. 지연 추정 시스템(310)은 DUT의 로직 블록들, 및 로직 블록들 중 하나 이상을 연결하는 조합 경로를 수신한다(802). 예를 들어, 타이밍 그래프 생성 엔진(316)은 조합 경로(220)의 로직 블록들(221 및 222)을 포함하는 네트리스트를 수신하고(802) 조합 경로(220)(예를 들어, 그것의 로직 길이, 조합 경로 내의 와이어들의 팬아웃 성질 등과 같은 조합 경로에 관한 정보)를 수신한다. 지연 추정 시스템(310)은 조합 경로를 나타내는 피쳐 벡터에 지연 모델을 적용한다(804). 예를 들어, 타이밍 그래프 생성 엔진(316)은 피쳐 벡터 생성 엔진(313)에 의해 생성된 피쳐 벡터에 지연 모델(315)을 적용한다(804). 지연 추정 시스템(310)은 조합 경로의 지연에 기초하여 타이밍 그래프를 생성한다(806). 예를 들어, 타이밍 그래프 생성 엔진(316)은 지연 모델(315)에 의해 출력된 추정된 지연을 수신하고, 여기서 추정된 지연은 로직 블록(221) 내의 와이어들의 추정된 와이어 지연에 대응한다. 타이밍 그래프 생성 엔진(316)은 로직 블록(221)에 포함된 프리미티브들에 기초하여 프리미티브 지연을 결정하고, 로직 블록(221)에 대한 추정된 와이어 지연과 프리미티브 지연의 합을 결정한다. 타이밍 그래프 생성 엔진(316)은 로직 블록(222)에 대한 프리미티브 및 와이어 지연들의 합을 유사하게 결정할 수 있다. 타이밍 그래프 생성 엔진(316)은 조합 경로(220)의 총 조합 경로 지연을 결정하기 위해 로직 블록들(221 및 222) 둘 다에 대한 프리미티브 및 와이어 지연들과 pA1과 pB1 사이의 조합 경로의 부분에 대응하는 지연을 조합할 수 있다. 타이밍 그래프 생성 엔진(316)은 로직 블록들의 프리미티브 지연들, 로직 블록들의 와이어링 지연들, FPGA들 사이의(예를 들어, pA1과 pB1 사이의) 연결들의 지연들, 총 조합 경로 지연들, 또는 이들의 임의의 조합을 포함할 수 있는 타이밍 그래프를 생성한다(806). 지연 추정 시스템(310)은 DUT의 배치 및 라우팅을 수행하기 위해 컴파일러에 타이밍 그래프를 제공한다(808). 예를 들어, 타이밍 그래프 생성 엔진(316)은 조합 경로들(210 및 220)에 대한 지연들을 포함하는 타이밍 그래프를 컴파일러(321)에 제공하여, DUT가 분할되는 FPGA들의 P&R을 수행한다. P&R의 일 예에서, FPGA A-C는 도 2에 도시된 구성과 다른 구성으로 배치되고 라우팅될 수 있다.
도 9는 예시적인 에뮬레이션 환경(900)의 도면을 도시한다. 에뮬레이션 환경(900)은 회로 설계의 기능성을 검증하도록 구성될 수 있다. 에뮬레이션 환경(900)은 호스트 시스템(907)(예를 들어, 전자 설계 자동화(EDA) 시스템의 일부인 컴퓨터) 및 에뮬레이션 시스템(902)(예를 들어, 필드 프로그래머블 게이트 어레이(FPGA)들 또는 프로세서들과 같은 프로그래머블 디바이스들의 세트)을 포함할 수 있다. 호스트 시스템은 회로 설계를 에뮬레이트하도록 에뮬레이션 시스템을 구조화하기 위해 컴파일러(910)를 사용함으로써 데이터 및 정보를 생성한다. 에뮬레이트될 회로 설계는 또한 테스트 중인 설계(DUT)로도 지칭되며, 에뮬레이션으로부터의 데이터 및 정보는 DUT의 기능을 검증하는 데 사용된다.
호스트 시스템(907)은 하나 이상의 프로세서를 포함할 수 있다. 호스트 시스템이 다수의 프로세서들을 포함하는 실시예에서, 호스트 시스템에 의해 수행되는 것으로 본 명세서에서 설명된 기능들은 다수의 프로세서 사이에 분산될 수 있다. 호스트 시스템(907)은 DUT를 나타내는 디스크립션 언어로 작성된 사양들을 변환하고, DUT를 에뮬레이트하기 위해 에뮬레이션 시스템(902)을 구조화하는 데 사용되는 데이터(예를 들어, 이진 데이터) 및 정보를 생성하기 위한 컴파일러(910)를 포함할 수 있다. 컴파일러(910)는 DUT의 타이밍을 변환, 변경, 재구조화, 새로운 기능 추가 및/또는 제어할 수 있다.
호스트 시스템(907) 및 에뮬레이션 시스템(902)은 에뮬레이션 연결에 의해 운반되는 신호들을 사용하여 데이터 및 정보를 교환한다. 연결은 권장 표준 232(recommended standard 232; RS232) 또는 범용 직렬 버스(universal serial bus; USB) 프로토콜들과 호환가능한 핀 구조들을 가지는 케이블들과 같은 하나 이상의 전기 케이블들일 수 있지만, 이에 한정되지 않는다. 연결은 유선 통신 매체 또는 네트워크, 예컨대 로컬 영역 네트워크, 또는 인터넷과 같은 광역 네트워크일 수 있다. 연결은 블루투스 또는 IEEE 802.11과 같은 무선 프로토콜을 사용하는 하나 이상의 액세스 포인트를 갖는 무선 통신 매체 또는 네트워크일 수 있다. 호스트 시스템(907) 및 에뮬레이션 시스템(902)은 네트워크 서버와 같은 제3 디바이스를 통해 데이터 및 정보를 교환할 수 있다.
에뮬레이션 시스템(902)은 FPGA들(9041 및 9042)뿐만 아니라 추가적인 FPGA들(904N까지)과 같은 다수의 FPGA들(또는 다른 모듈들)을 포함한다. 각각의 FPGA는 FPGA들이 신호들을 교환하기 위해 FPGA가 그를 통해 다른 FPGA들(및 잠재적으로 다른 에뮬레이션 컴포넌트들)에 연결되는 하나 이상의 FPGA 인터페이스를 포함할 수 있다. FPGA 인터페이스는 입력/출력 핀 또는 FPGA 패드로 지칭될 수 있다. 에뮬레이터가 FPGA들을 포함할 수 있지만, 에뮬레이터들의 실시예들은 DUT들을 에뮬레이트하기 위해 FPGA들 대신에 또는 FPGA들과 함께 다른 유형의 로직 블록들을 포함할 수 있다. 예를 들어, 에뮬레이션 시스템(902)은 커스텀 FPGA들, 에뮬레이션 또는 프로토타입화를 위한 특수화된 ASIC들, 메모리들, 및 입력/출력 디바이스들을 포함할 수 있다.
프로그래머블 디바이스는 프로그래머블 로직 블록들의 어레이, 및 프로그래머블 로직 블록들이 HDL 코드 내의 디스크립션들에 따라 상호연결되는 것을 가능하게 할 수 있는 상호연결들의 계층 구조를 포함할 수 있다. 프로그래머블 로직 블록들 각각은 복잡한 조합 기능들을 가능하게 하거나, AND 및 XOR 로직 블록들과 같은 로직 게이트들을 가능하게 할 수 있다. 일부 실시예들에서, 로직 블록들은 또한 단순한 래치들, 플립플롭들, 또는 메모리의 다른 블록들일 수 있는 메모리 요소들/디바이스들을 포함할 수 있다. 상이한 로직 블록들 사이의 상호연결들의 길이에 따라, 신호들은 상이한 시간들에 로직 블록들의 입력 단자들에 도달할 수 있으며, 따라서 메모리 요소들/디바이스들에 일시적으로 저장될 수 있다.
FPGA들(9041-904N)은 하나 이상의 보드(9121 및 9122)뿐만 아니라 추가 보드들(912M까지) 상에 배치될 수 있다. 다수의 보드들이 에뮬레이션 유닛(9141) 내에 배치될 수 있다. 에뮬레이션 유닛 내의 보드들은 에뮬레이션 유닛의 백플레인 또는 임의의 다른 타입들의 연결들을 사용하여 연결될 수 있다. 또한, 다수의 에뮬레이션 유닛들(예를 들어, 9141 및 9142 내지 914K)은 멀티-에뮬레이션 유닛 시스템을 형성하기 위해 케이블들 또는 임의의 다른 수단에 의해 서로 연결될 수 있다.
에뮬레이트될 DUT에 대해, 호스트 시스템(907)은 하나 이상의 비트 파일을 에뮬레이션 시스템(902)에 전송한다. 비트 파일들은 DUT의 디스크립션을 지정할 수 있으며, 트레이스 및 주입 로직을 갖는, 호스트 시스템(907)에 의해 생성된 DUT의 파티션들, 에뮬레이터의 FPGA들에 대한 파티션들의 맵핑들, 및 설계 제약들을 더 지정할 수 있다. 비트 파일들을 사용하여, 에뮬레이터는 DUT의 기능들을 수행하도록 FPGA들을 구조화한다. 일부 실시예들에서, 에뮬레이터들의 하나 이상의 FPGA는 FPGA의 실리콘에 내장된 트레이스 및 주입 로직을 가질 수 있다. 이러한 실시예에서, FPGA들은 트레이스 및 주입 로직을 에뮬레이트하기 위해 호스트 시스템에 의해 구조화되지 않을 수 있다.
호스트 시스템(907)은 에뮬레이트될 DUT의 디스크립션을 수신한다. 일부 실시예들에서, DUT 디스크립션은 디스크립션 언어(예를 들어, 레지스터 전송 언어(RTL))로 되어 있다. 일부 실시예들에서, DUT 디스크립션은 네트리스트 레벨 파일들, 또는 네트리스트 레벨 파일들과 HDL 파일들의 혼합내에 있다. DUT 디스크립션의 일부 또는 전체 DUT 디스크립션이 HDL 내에 있는 경우, 호스트 시스템은 DUT 디스크립션을 합성하여, DUT 디스크립션을 이용한 게이트 레벨 네트리스트를 생성할 수 있다. 호스트 시스템은 DUT의 네트리스트를 사용해서 DUT를 다수의 파티션들로 분할할 수 있으며, 파티션들 중 하나 이상은 트레이스 및 주입 로직을 포함한다. 트레이스 및 주입 로직은 FPGA의 인터페이스들을 통해 교환되는 인터페이스 신호들을 트레이싱한다. 또한, 트레이스 및 주입 로직은 트레이싱된 인터페이스 신호들을 FPGA의 로직에 주입할 수 있다. 호스트 시스템은 각각의 파티션을 에뮬레이터의 FPGA에 맵핑한다. 일부 실시예들에서, 트레이스 및 주입 로직은 FPGA들의 그룹에 대한 선택된 파티션들에 포함된다. 트레이스 및 주입 로직은 에뮬레이터의 FPGA들 중 하나 이상에 내장될 수 있다. 호스트 시스템은 FPGA들에 맵핑될 멀티플렉서들을 합성할 수 있다. 멀티플렉서들은 인터페이스 신호들을 DUT 로직에 주입하기 위해 트레이스 및 주입 로직에 의해 사용될 수 있다.
호스트 시스템은 DUT의 각각의 파티션, 및 FPGA들에 대한 파티션들의 맵핑을 기술하는 비트 파일들을 생성한다. 트레이스 및 주입 로직이 포함되는 파티션들에 대해, 비트 파일들은 또한 포함되는 로직을 기술한다. 비트 파일들은 장소 및 경로 정보, 및 설계 제약들을 포함할 수 있다. 호스트 시스템은 비트 파일들, 및 어느 FPGA들이 DUT의 각각의 컴포넌트를 에뮬레이트할지(예를 들어, 각각의 컴포넌트가 어느 FPGA들에 맵핑될지)를 기술하는 정보를 저장한다.
요청 시에, 호스트 시스템은 에뮬레이터에 비트 파일들을 송신한다. 호스트 시스템은 DUT의 에뮬레이션을 시작하도록 에뮬레이터에 시그널링한다. DUT의 에뮬레이션 동안 또는 에뮬레이션의 끝에서, 호스트 시스템은 에뮬레이션 연결을 통해 에뮬레이터로부터 에뮬레이션 결과들을 수신한다. 에뮬레이션 결과들은 각각의 FPGA의 트레이스 및 주입 로직에 의해 트레이싱된 인터페이스 신호들 및 인터페이스 신호들의 상태들을 포함하는, DUT의 에뮬레이션 동안 에뮬레이터에 의해 생성된 데이터 및 정보이다. 호스트 시스템은 에뮬레이션 결과들을 저장할 수 있고/있거나, 에뮬레이션 결과들을 다른 처리 시스템에 전송할 수 있다.
DUT의 에뮬레이션 후에, 회로 설계자는 DUT의 컴포넌트를 디버깅하도록 요청할 수 있다. 그러한 요청이 이루어지는 경우, 회로 설계자는 디버깅할 에뮬레이션의 기간을 지정할 수 있다. 호스트 시스템은 저장된 정보를 이용하여 어느 FPGA들이 컴포넌트를 에뮬레이트하고 있는지를 식별한다. 호스트 시스템은 기간과 연관되고 각각의 식별된 FPGA의 트레이스 및 주입 로직에 의해 트레이싱된 저장된 인터페이스 신호들을 검색한다. 호스트 시스템은 식별된 FPGA들을 재-에뮬레이트하도록 에뮬레이터에 시그널링한다. 호스트 시스템은 검색된 인터페이스 신호들을 에뮬레이터에 송신하여, 지정된 기간 동안 컴포넌트를 재-에뮬레이트한다. 각각의 식별된 FPGA의 트레이스 및 주입 로직은 호스트 시스템으로부터 수신된 각각의 인터페이스 신호들을 FPGA에 맵핑된 DUT의 로직에 주입한다. FPGA의 다수의 재-에뮬레이션들의 경우에, 결과들을 병합하는 것은 전체 디버그 뷰를 생성한다.
호스트 시스템은 컴포넌트의 재-에뮬레이션 동안 식별된 FPGA들의 로직에 의해 트레이싱된 신호들을 에뮬레이션 시스템으로부터 수신한다. 호스트 시스템은 에뮬레이터로부터 수신된 신호들을 저장한다. 재-에뮬레이션 동안 트레이싱된 신호들은 초기 에뮬레이션 동안의 샘플링 레이트보다 더 높은 샘플링 레이트를 가질 수 있다. 예를 들어, 초기 에뮬레이션에서, 트레이싱된 신호는 매 X 밀리초마다 컴포넌트의 저장된 상태를 포함할 수 있다. 그러나, 재-에뮬레이션에서, 트레이싱된 신호는 매 Y 밀리초마다 저장된 상태를 포함할 수 있고, 여기서 Y는 X보다 더 작다. 회로 설계자가 재-에뮬레이션 동안 트레이싱된 신호의 파형을 보기 위해 요청하는 경우, 호스트 시스템은 저장된 신호를 검색하고 신호의 플롯을 디스플레이할 수 있다. 예를 들어, 호스트 시스템은 신호의 파형을 생성할 수 있다. 그 후, 회로 설계자는 상이한 기간 동안 동일한 컴포넌트를 재-에뮬레이트하거나 다른 컴포넌트를 재-에뮬레이트하도록 요청할 수 있다.
호스트 시스템(907) 및/또는 컴파일러(910)는 설계 합성기 서브시스템, 맵핑 서브시스템, 런타임 서브시스템, 결과 서브시스템, 디버그 서브시스템, 파형 서브시스템 및 저장 서브시스템과 같은, 그러나 이에 한정되지 않는 서브시스템들을 포함할 수 있다. 서브시스템들은 개별 또는 다수의 모듈로서 구조화되고 가능해질 수 있거나, 둘 이상이 모듈로서 구조화될 수 있다. 이들 서브시스템들은 함께 에뮬레이터를 구조화하고 에뮬레이션 결과들을 모니터링한다.
설계 합성기 서브시스템은 DUT(905)를 나타내는 HDL을 게이트 레벨 로직으로 변환한다. 에뮬레이트될 DUT에 대해, 설계 합성기 서브시스템은 DUT의 디스크립션을 수신한다. DUT의 디스크립션이 완전히 또는 부분적으로 HDL(예를 들어, RTL 또는 다른 표현 레벨) 내에 있는 경우, 설계 합성기 서브시스템은 DUT의 HDL을 합성하여, 게이트 레벨 로직에 관하여 DUT의 디스크립션을 갖는 게이트-레벨 네트리스트를 생성한다.
맵핑 서브시스템은 DUT들을 분할하고, 파티션들을 에뮬레이터 FPGA들로 맵핑한다. 맵핑 서브시스템은 DUT의 네트리스트를 이용하여 게이트 레벨의 DUT를 다수의 파티션들로 분할한다. 각각의 파티션에 대해, 맵핑 서브시스템은 트레이스 및 주입 로직의 게이트 레벨 디스크립션을 검색하고, 로직을 파티션에 추가한다. 전술한 바와 같이, 파티션에 포함된 트레이스 및 주입 로직은 파티션이 맵핑되는 FPGA의 인터페이스들을 통해 교환되는 신호들(트레이스 인터페이스 신호들)을 트레이싱하는 데 사용된다. 트레이스 및 주입 로직은 분할 전에 DUT에 추가될 수 있다. 예를 들어, 트레이스 및 주입 로직은 DUT의 HDL을 합성하기 전 또는 후에 설계 합성기 서브시스템에 의해 추가될 수 있다.
트레이스 및 주입 로직을 포함하는 것에 더하여, 맵핑 서브시스템은 트레이스 및 주입에 의해 트레이싱되지 않는 소정의 DUT 컴포넌트들의 상태들을 트레이싱하기 위해 파티션 내에 추가적인 트레이싱 로직을 포함할 수 있다. 맵핑 서브시스템은 분할 전에 DUT 내에 또는 분할 후에 파티션 내에 추가의 트레이싱 로직을 포함할 수 있다. 설계 합성기 서브시스템은 HDL 디스크립션을 합성하기 전에 DUT의 HDL 디스크립션에 추가적인 트레이싱 로직을 포함할 수 있다.
맵핑 서브시스템은 DUT의 각각의 파티션을 에뮬레이터의 FPGA에 맵핑한다. 분할 및 맵핑을 위해, 맵핑 서브시스템은 설계 규칙들, 설계 제약들(예로서, 타이밍 또는 로직 제약들) 및 에뮬레이터에 대한 정보를 이용한다. DUT의 컴포넌트들에 대해, 맵핑 서브-시스템은 어느 FPGA들이 각각의 컴포넌트를 에뮬레이트할지를 설명하는 정보를 저장 서브-시스템에 저장한다.
분할 및 맵핑을 사용하여, 맵핑 서브시스템은 생성된 파티션들, 및 에뮬레이터의 각각의 FPGA에 대한 로직의 맵핑을 기술하는 하나 이상의 비트 파일을 생성한다. 비트 파일들은 DUT의 제약들, 및 FPGA들 사이의 연결들과 각각의 FPGA 내의 연결들의 라우팅 정보와 같은 추가 정보를 포함할 수 있다. 맵핑 서브시스템은 DUT의 각각의 파티션에 대한 비트 파일을 생성할 수 있고 저장 서브시스템에 비트 파일을 저장할 수 있다. 회로 설계자로부터의 요청 시에, 맵핑 서브시스템은 비트 파일들을 에뮬레이터에 전송하고, 에뮬레이터는 비트 파일들을 이용하여 DUT를 에뮬레이트하도록 FPGA들을 구조화할 수 있다.
에뮬레이터가 트레이스 및 주입 로직을 포함하는 특수화된 ASIC들을 포함하는 경우, 맵핑 서브시스템은 특수화된 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의 임의의 요소(예를 들어, 컴포넌트, 디바이스, 또는 신호)를 식별할 수 있다.
파형 서브시스템은 트레이싱된 신호들을 이용하여 파형들을 생성한다. 회로 설계자가 에뮬레이션 실행 동안 트레이싱된 신호의 파형을 보기를 요청하는 경우, 호스트 시스템은 저장 서브시스템으로부터 신호를 검색한다. 파형 서브시스템은 신호의 플롯을 디스플레이한다. 하나 이상의 신호에 대해, 신호들이 에뮬레이터로부터 수신될 때, 파형 서브시스템은 신호들의 플롯들을 자동으로 생성할 수 있다.
도 10은 머신으로 하여금 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하게 하기 위한 명령어들의 세트가 실행될 수 있는 컴퓨터 시스템(1000)의 예시적인 머신을 나타낸다. 대안적인 구현들에서, 머신은 LAN, 인트라넷, 엑스트라넷, 및/또는 인터넷에서 다른 머신들에 연결(예를 들어, 네트워킹)될 수 있다. 머신은 클라이언트-서버 네트워크 환경에서 서버 또는 클라이언트 머신으로서, 피어-투-피어(또는 분산형) 네트워크 환경에서 피어 머신으로서, 또는 클라우드 컴퓨팅 인프라스트럭처 또는 환경에서 서버 또는 클라이언트 머신으로서 동작할 수 있다.
머신은 PC(personal computer), 태블릿 PC, STB(set-top box), PDA(Personal Digital Assistant), 셀룰러 전화, 웹 기기, 서버, 네트워크 라우터, 스위치 또는 브리지, 또는 해당 머신에 의해 취해질 액션들을 지정하는 명령어들의 세트(순차적 또는 다른 방식)를 실행할 수 있는 임의의 머신일 수 있다. 또한, 단일 머신이 예시되어 있지만, "머신"이라는 용어는 또한 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하기 위해 명령어들의 세트(또는 다수의 세트)를 개별적으로 또는 공동으로 실행하는 머신들의 임의의 집합을 포함하는 것으로 간주되어야 한다.
예시적인 컴퓨터 시스템(1000)은, 버스(1030)를 통해 서로 통신하는, 처리 디바이스(1002), 메인 메모리(1004)(예를 들어, 판독 전용 메모리(ROM), 플래시 메모리, 동기식 DRAM(SDRAM)과 같은 동적 랜덤 액세스 메모리(DRAM)), 정적 메모리(1006)(예를 들어, 플래시 메모리, 정적 랜덤 액세스 메모리(SRAM) 등), 및 데이터 저장 디바이스(1018)를 포함한다.
처리 디바이스(1002)는 마이크로프로세서, 중앙 처리 유닛 또는 그와 유사한 것과 같은 하나 이상의 프로세서를 나타낸다. 보다 구체적으로, 처리 디바이스는 CISC(complex instruction set computing) 마이크로프로세서, RISC(reduced instruction set computing) 마이크로프로세서, VLIW(very long instruction word) 마이크로프로세서, 또는 다른 명령어 세트들을 구현하는 프로세서, 또는 명령어 세트들의 조합을 구현하는 프로세서들일 수 있다. 처리 디바이스(1002)는 또한 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP), 네트워크 프로세서 또는 그와 유사한 것과 같은 하나 이상의 특수 목적 처리 디바이스일 수 있다. 처리 디바이스(1002)는 본 명세서에 설명된 동작들 및 단계들을 수행하기 위한 명령어들(1026)을 실행하도록 구성될 수 있다.
컴퓨터 시스템(1000)은 네트워크(1020)를 통해 통신하기 위해 네트워크 인터페이스 디바이스(1008)를 더 포함할 수 있다. 컴퓨터 시스템(1000)은 또한, 비디오 디스플레이 유닛(1010)(예를 들어, 액정 디스플레이(LCD) 또는 음극선관(CRT)), 영숫자 입력 디바이스(1012)(예를 들어, 키보드), 커서 제어 디바이스(1014)(예를 들어, 마우스), 그래픽 처리 유닛(1022), 신호 생성 디바이스(1016)(예를 들어, 스피커), 그래픽 처리 유닛(1022), 비디오 처리 유닛(1028), 및 오디오 처리 유닛(1032)을 포함할 수 있다.
데이터 저장 디바이스(1018)는, 여기서 설명된 방법론들 또는 기능들 중 임의의 하나 이상을 구현하는 하나 이상의 세트의 명령어(1026) 또는 소프트웨어가 저장되어 있는 (비일시적 컴퓨터 판독가능 매체라고도 알려진) 머신 판독가능 저장 매체(1024)를 포함할 수 있다. 명령어들(1026)은 또한, 컴퓨터 시스템(1000)에 의한 그 실행 동안에, 완전히 또는 적어도 부분적으로, 메인 메모리(1004) 내에 및/또는 처리 디바이스(1002) 내에 존재할 수 있고, 메인 메모리(1004)와 처리 디바이스(1002)는 또한 머신 판독가능 저장 매체를 구성한다.
일부 구현들에서, 명령어들(1026)은 본 개시내용에 대응하는 기능성을 구현하기 위한 명령어들을 포함한다. 머신 판독가능 저장 매체(1024)가 예시적인 구현에서 단일 매체인 것으로 도시되어 있지만, "머신 판독가능 저장 매체"라는 용어는 명령어들의 하나 이상의 세트를 저장하는 단일 매체 또는 복수의 매체(예를 들어, 중앙집중형 또는 분산형 데이터베이스, 및/또는 연관된 캐시들 및 서버들)를 포함하는 것으로 간주되어야 한다. 용어 "머신 판독가능 저장 매체"는 또한, 머신에 의한 실행을 위한 한 세트의 명령어를 저장 또는 인코딩할 수 있고 머신 및 처리 디바이스(1002)로 하여금 본 개시내용의 방법론들 중 임의의 하나 이상을 수행하게 하는 임의의 매체를 포함하는 것으로 간주되어야 한다. 따라서, "머신 판독가능 저장 매체"라는 용어는 고체 상태 메모리들, 광학 매체 및 자기 매체를 포함하지만 이에 한정되지는 않는 것으로 간주되어야 한다.
추가적인 구성 고려사항들
개시된 구성들의 예시적인 혜택들 및 이점들은 DUT 내의 조합 경로의 지연이 추정되는 정확도를 증가시키는 것, 지연들의 정확도가 증가함에 따라 둘 다 개선되는 컴파일러 분할 및 P&R로 인해 DUT가 에뮬레이트되는 속도를 증가시키는 것(즉, 컴파일된 DUT를 에뮬레이트할 때 에뮬레이터가 필요로 하는 처리 사이클들을 감소시키는 것), 및 DUT 내의 조합 경로의 지연을 추정하기 위해 소비되는 처리 자원들을 감소시키는 것을 포함한다. 조합 경로를 결정하는 데 필요한 처리 자원들을 감소시키기 위해, 본 명세서에 설명되는 지연 추정 시스템은 차원들이 서로 직교하는 피쳐 벡터들을 사용한다. 중복 정보(예를 들어, 하나의 피쳐 내의 조합 경로에 관한 데이터가 다른 피쳐로부터 도출될 수 있음)를 피하는 차원들을 사용함으로써, 지연 추정 시스템은 지연이 생성되는 정확도를 증가시키면서(예를 들어, 추가적인 비중복 정보는 상이한 조합 경로들과 대응하는 지연들을 구별하는 시스템의 능력을 증가시킴), 동시에 중복 정보를 처리하기 위해 처리 자원들을 낭비하지 않는다. 컴파일 워크플로우의 초기 백엔드 단계들에서 더 정확한 지연 추정을 제공함으로써, 지연 추정 시스템은 컴파일러가 그 지연들이 진정한 임계 경로들의 지연들만큼 크지 않은 부정확하게 플래그된 임계 경로들이 아니라 DUT의 진정한 임계 경로들을 최적화하는 것에 집중할 수 있게 한다. 따라서, 지연 추정 시스템은 내부 FPGA 지연들을 조정하기 위한 수동 튜닝 또는 추가적인 반복들 없이 DUT 에뮬레이션을 개선할 수 있다(예를 들어, 최적화된 임계 경로들은 에뮬레이션의 속도가 증가하게 한다). 또한, 정확도가 낮은 초기 결과들로 인해 에뮬레이션을 재수행하는 것이 필요한 빈도를 감소시키는 것은 또한 에뮬레이션 시스템에 의해 소비되는 처리 자원들을 감소시킨다. 더 높은 에뮬레이션 주파수는 사용자 설계들의 테스트 프로세스에서 더 빠른 턴어라운드를 가능하게 하고, 더 많은 커버리지를 허용하고, 비용을 낮춘다.
이전의 상세한 설명들의 일부 부분들은 컴퓨터 메모리 내의 데이터 비트들에 대한 연산들의 알고리즘들 및 심볼 표현들의 관점에서 제시되었다. 이러한 알고리즘 디스크립션들 및 표현들은 데이터 처리 분야의 통상의 기술자가 그들의 작업의 본질을 본 기술분야의 다른 통상의 기술자에게 가장 효과적으로 전달하기 위해 사용되는 방식들이다. 알고리즘은 원하는 결과를 초래하는 동작들의 시퀀스일 수 있다. 동작들은 물리적 양들의 물리적 조작들을 요구하는 것들이다. 이러한 양들은 저장, 결합, 비교, 및 다른 방식으로 조작될 수 있는 전기 또는 자기 신호들의 형태를 취할 수 있다. 이러한 신호는 비트, 값, 요소, 심볼, 문자, 용어, 숫자 또는 그와 유사한 것으로 지칭될 수 있다.
그러나, 이들 및 유사한 용어들 모두는 적절한 물리적 양들과 연관되고 이들 양에 적용되는 편리한 라벨들일 뿐이라는 점을 명심해야 한다. 본 개시내용으로부터 명백한 바와 같이 구체적으로 달리 언급되지 않는 한, 설명 전반에 걸쳐, 특정 용어들이 컴퓨터 시스템의 레지스터들 및 메모리들 내의 물리적(전자적) 양들로서 표현되는 데이터를 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 이러한 정보 저장 디바이스들 내의 물리적 양들로서 유사하게 표현되는 다른 데이터로 조작하고 변환하는, 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 디바이스의 동작 및 프로세스들을 지칭한다는 것이 이해된다.
본 개시내용은 또한 본 명세서에서의 동작들을 수행하기 위한 장치에 관한 것이다. 이 장치는 의도된 목적을 위해 특별히 구성될 수 있거나, 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은, 각각이 컴퓨터 시스템 버스에 결합되는, 플로피 디스크들, 광학 디스크들, CD-ROM들, 및 자기-광학 디스크들을 포함하는 임의의 타입의 디스크, 판독-전용 메모리(ROM)들, 랜덤 액세스 메모리(RAM)들, EPROM들, EEPROM들, 자기 또는 광학 카드들, 또는 전자 명령어들을 저장하기에 적합한 임의의 타입의 매체와 같은, 그러나 이에 한정되지 않는, 컴퓨터 판독가능 저장 매체에 저장될 수 있다.
본 명세서에 제시된 알고리즘들 및 디스플레이들은 본질적으로 임의의 특정 컴퓨터 또는 다른 장치에 관련되지 않는다. 다양한 다른 시스템들이 본 명세서의 교시들에 따라 프로그램들과 함께 사용될 수 있거나, 또는 방법을 수행하기 위해 더 특수화된 장치를 구성하는 것이 편리한 것으로 판명될 수 있다. 또한, 본 개시내용은 임의의 특정 프로그래밍 언어를 참조하여 설명되지 않는다. 다양한 프로그래밍 언어들이 본 명세서에 기술된 바와 같은 개시내용의 교시들을 구현하기 위해 사용될 수 있다는 것이 이해될 것이다.
본 개시내용은 본 개시내용에 따른 프로세스를 수행하도록 컴퓨터 시스템(또는 다른 전자 디바이스들)을 프로그래밍하는 데 사용될 수 있는 명령어들이 저장되어 있는 머신 판독가능 매체를 포함할 수 있는 컴퓨터 프로그램 제품 또는 소프트웨어로서 제공될 수 있다. 머신 판독가능 매체는 머신(예를 들어, 컴퓨터)에 의해 판독가능 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함한다. 예를 들어, 머신 판독가능(예를 들어, 컴퓨터 판독가능) 매체는 판독 전용 메모리("ROM"), 랜덤 액세스 메모리("RAM"), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 디바이스들 등과 같은 머신(예를 들어, 컴퓨터) 판독가능 저장 매체를 포함한다.
전술한 개시내용에서, 개시내용의 구현예들은 그 특정 예시적인 구현예들을 참조하여 설명되었다. 다음의 청구항들에 제시된 바와 같은 본 개시내용의 구현들의 더 넓은 사상 및 범위를 벗어나지 않고 다양한 수정들이 이루어질 수 있다는 것이 명백할 것이다. 본 개시내용이 단일 시제에서의 일부 요소들을 언급하는 경우, 하나 초과의 요소가 도면들에 묘사될 수 있고 유사한 요소들은 유사한 번호들로 라벨링된다. 따라서, 본 개시내용 및 도면들은 제한적인 의미가 아니라 예시적인 의미로 간주되어야 한다.

Claims (20)

  1. 지연 추정을 위해 저장된 명령어들을 포함하는 비일시적 컴퓨터 판독가능 매체로서,
    상기 저장된 명령어들은, 프로세서에 의해 실행될 때, 상기 프로세서로 하여금:
    테스트 중인 설계(design under test; DUT)의 복수의 로직 블록들, 및 상기 복수의 로직 블록들 중 하나 이상의 로직 블록을 연결하는 조합 경로(combinatorial path)를 수신하고;
    컴파일러에 의해 상기 DUT를 분할함으로써 생성되는 상기 조합 경로의 와이어 지연을 나타내는 하나 이상의 직교 피쳐들을 포함하는 피쳐 벡터에 지연 모델을 적용하고 - 상기 지연 모델은 복수의 조합 경로들의 복수의 측정된 지연들을 나타내는 상기 하나 이상의 직교 피쳐들을 사용하여 트레이닝되고, 상기 지연 모델은 상기 조합 경로의 상기 와이어 지연을 결정함 -;
    상기 조합 경로의 상기 와이어 지연에 기초하여 타이밍 그래프를 생성하고;
    상기 DUT의 배치 및 라우팅을 수행하기 위해 상기 컴파일러에 상기 타이밍 그래프를 제공하도록
    하는, 비일시적 컴퓨터 판독가능 매체.
  2. 제1항에 있어서,
    상기 명령어들은, 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금:
    컴파일된 DUT들의 상기 복수의 조합 경로 및 상기 복수의 조합 경로의 복수의 측정된 지연을 이용하여 제1 트레이닝 데이터 세트를 생성하고;
    상기 제1 트레이닝 데이터 세트를 사용하여 상기 지연 모델을 트레이닝하도록
    하는 명령어들을 더 포함하는, 비일시적 컴퓨터 판독가능 매체.
  3. 제2항에 있어서,
    상기 명령어들은, 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금:
    상기 조합 경로의 측정된 지연을 수신하고 - 상기 측정된 지연은 상기 컴파일러가 상기 DUT를 컴파일한 후에 획득됨 -;
    상기 조합 경로 및 상기 측정된 지연을 사용하여 생성된 제2 트레이닝 데이터 세트를 사용하여 상기 지연 모델을 재트레이닝하도록
    하는 명령어들을 더 포함하는, 비일시적 컴퓨터 판독가능 매체.
  4. 제3항에 있어서,
    상기 제2 트레이닝 데이터 세트를 사용하여 상기 지연 모델을 재트레이닝하는 명령어들은, 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금:
    상기 피쳐 벡터의 복수의 차원에 대응하는 복수의 가중치를 조정하고;
    조정된 복수의 가중치, 상기 조합 경로 및 상기 측정된 지연을 사용하여 상기 제2 트레이닝 데이터 세트를 생성하고;
    상기 제2 트레이닝 데이터 세트를 사용하여 상기 지연 모델을 재트레이닝하도록
    하는 명령어들을 더 포함하는, 비일시적 컴퓨터 판독가능 매체.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 명령어들은, 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금:
    상기 조합 경로 상의 로직 레벨들의 수, 상기 조합 경로 상의 복수의 와이어들의 총 계층 거리(total hierarchical distance), 상기 조합 경로 상의 상기 복수의 와이어들의 팬아웃들의 합, 상기 조합 경로의 타이밍 경로 타입, 상기 조합 경로가 걸쳐 이어지는 복수의 필드 프로그래머블 게이트 어레이(field programmable gate array; FPGA)들의 레지스터 프리미티브 필 레이트(register primitive fill rate), 및 상기 복수의 FPGA들의 룩업 테이블(look-up-table; LUT) 프리미티브 필 레이트 중 적어도 하나를 사용하여 상기 피쳐 벡터를 생성하도록
    하는 명령어들을 더 포함하는, 비일시적 컴퓨터 판독가능 매체.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 조합 경로는 제1 개수의 FPGA에 걸쳐 이어지는 제1 조합 경로이고, 상기 지연은 제1 지연이고, 상기 명령어들은, 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금:
    제2 개수의 FPGA에 걸쳐 이어지는 제2 조합 경로에 대한 제2 지연을 결정하고 - 상기 제2 개수의 FPGA는 상기 제1 개수의 FPGA보다 적음 -;
    상기 제2 지연이 상기 제1 지연보다 크다는 것에 응답하여, 상기 제2 조합 경로가 임계 경로(critical path)라고 결정하도록 - 상기 컴파일러는 상기 제1 조합 경로에 제1 시분할 다중화(time-division multiplexing; TDM) 비율을 할당하고 상기 제2 조합 경로에 제2 TDM 비율을 할당하고, 상기 제2 TDM 비율은 상기 제1 TDM 비율보다 큼 -
    하는 명령어들을 더 포함하는, 비일시적 컴퓨터 판독가능 매체.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 명령어들은, 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금:
    상기 DUT의 회로 설계를 복수의 FPGA들에 걸쳐 분할하고;
    상기 조합 경로 상에서 연결된 상기 하나 이상의 로직 블록을 식별하도록
    하는 명령어들을 더 포함하는, 비일시적 컴퓨터 판독가능 매체.
  8. 제7항에 있어서,
    상기 타이밍 그래프는 제1 타이밍 그래프이고,
    상기 회로 설계를 분할하기 위한 명령어들은 상기 지연 모델에 의해 생성된 제2 타이밍 그래프를 이용하여 상기 회로 설계를 분할하기 위한 명령어들을 포함하는, 비일시적 컴퓨터 판독가능 매체.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 조합 경로의 상기 와이어 지연에 기초하여 타이밍 그래프를 생성하기 위한 명령어들은:
    상기 조합 경로의 프리미티브 지연을 결정하고;
    상기 와이어 지연과 상기 프리미티브 지연을 이용하여 총 조합 경로 지연을 결정하기 위한 - 상기 타이밍 그래프는 상기 DUT의 복수의 로직 블록들을 연결하는 복수의 조합 경로들에 대한 복수의 총 조합 경로 지연들을 포함함 -
    명령어들을 포함하는, 비일시적 컴퓨터 판독가능 매체.
  10. 지연 추정을 위한 방법으로서,
    DUT의 복수의 로직 블록, 및 상기 복수의 로직 블록 중 하나 이상의 로직 블록을 연결하는 조합 경로를 수신하는 단계;
    상기 조합 경로를 나타내는 피쳐 벡터에 지연 모델을 적용하는 단계 - 상기 지연 모델은 상기 조합 경로의 지연을 결정하도록 구성됨 -;
    프로세서에 의해 상기 조합 경로의 지연에 기초하여 타이밍 그래프를 생성하는 단계; 및
    상기 DUT의 배치 및 라우팅의 성능을 위해 상기 타이밍 그래프를 제공하는 단계
    를 포함하는, 방법.
  11. 제10항에 있어서,
    컴파일된 DUT들의 복수의 조합 경로 및 상기 복수의 조합 경로의 복수의 측정된 지연을 이용하여 제1 트레이닝 데이터 세트를 생성하는 단계; 및
    상기 제1 트레이닝 데이터 세트를 사용하여 상기 지연 모델을 트레이닝하는 단계
    를 더 포함하는, 방법.
  12. 제11항에 있어서,
    상기 조합 경로의 측정된 지연을 수신하는 단계 - 상기 측정된 지연은 컴파일러가 상기 DUT를 컴파일한 후에 획득됨 -; 및
    상기 조합 경로 및 상기 측정된 지연을 사용하여 생성된 제2 트레이닝 데이터 세트를 사용하여 상기 지연 모델을 재트레이닝하는 단계
    를 더 포함하는, 방법.
  13. 제12항에 있어서,
    상기 제2 트레이닝 데이터 세트를 사용하여 상기 지연 모델을 재트레이닝하는 단계는:
    상기 피쳐 벡터의 복수의 차원에 대응하는 복수의 가중치를 조정하는 단계;
    조정된 복수의 가중치, 상기 조합 경로 및 상기 측정된 지연을 사용하여 상기 제2 트레이닝 데이터 세트를 생성하는 단계; 및
    상기 제2 트레이닝 데이터 세트를 사용하여 상기 지연 모델을 재트레이닝하는 단계
    를 포함하는, 방법.
  14. 제10항 내지 제13항 중 어느 한 항에 있어서,
    상기 조합 경로 상의 로직 레벨들의 수, 상기 조합 경로 상의 복수의 와이어들의 총 계층 거리, 상기 조합 경로 상의 상기 복수의 와이어들의 팬아웃들의 합, 상기 조합 경로의 타이밍 경로 타입, 상기 조합 경로가 걸쳐 이어지는 복수의 FPGA들의 레지스터 프리미티브 필 레이트, 및 상기 복수의 FPGA들의 LUT 프리미티브 필 레이트 중 적어도 하나를 사용하여 상기 피쳐 벡터를 생성하는 단계
    를 더 포함하는, 방법.
  15. 제10항 내지 제14항 중 어느 한 항에 있어서,
    상기 조합 경로는 제1 개수의 FPGA에 걸쳐 이어지는 제1 조합 경로이고, 상기 지연은 제1 지연이며, 상기 방법은:
    제2 개수의 FPGA에 걸쳐 이어지는 제2 조합 경로에 대한 제2 지연을 결정하는 단계 - 상기 제2 개수의 FPGA는 상기 제1 개수의 FPGA보다 적음 -; 및
    상기 제2 지연이 상기 제1 지연보다 크다는 것에 응답하여, 상기 제2 조합 경로가 임계 경로라고 결정하는 단계 - 상기 컴파일러는 상기 제1 조합 경로에 제1 시분할 다중화(TDM) 비율을 할당하고 상기 제2 조합 경로에 제2 TDM 비율을 할당하며, 상기 제2 TDM 비율은 상기 제1 TDM 비율보다 큼 -
    를 더 포함하는, 방법.
  16. 지연 추정을 위한 시스템으로서,
    메모리; 및
    상기 메모리와 동작가능하게 결합된 프로세서
    를 포함하고, 상기 프로세서는:
    DUT의 복수의 로직 블록, 및 상기 복수의 로직 블록 중 하나 이상의 로직 블록을 연결하는 조합 경로를 수신하고;
    상기 조합 경로를 나타내는 피쳐 벡터에 지연 모델을 적용하고 - 상기 지연 모델은 상기 조합 경로의 지연을 결정하도록 구성됨 -;
    상기 조합 경로의 지연에 기초하여 타이밍 그래프를 생성하고;
    상기 DUT의 배치 및 라우팅을 수행하기 위해 상기 타이밍 그래프를 컴파일러에 제공하는,
    시스템.
  17. 제16항에 있어서,
    상기 프로세서는:
    컴파일된 DUT들의 복수의 조합 경로 및 상기 복수의 조합 경로 중의 복수의 측정된 지연을 이용하여 제1 트레이닝 데이터 세트를 생성하고 - 상기 복수의 측정된 지연은 측정된 지연들의 데이터베이스에 저장됨 -;
    상기 제1 트레이닝 데이터 세트를 사용하여 상기 지연 모델을 트레이닝하도록
    더 구성되는, 시스템.
  18. 제17항에 있어서, 상기 프로세서는:
    상기 조합 경로의 측정된 지연을 수신하고 - 상기 측정된 지연은 상기 컴파일러가 상기 DUT를 컴파일한 후에 획득됨 -;
    상기 조합 경로 및 상기 측정된 지연을 사용하여 생성된 제2 트레이닝 데이터 세트를 사용하여 상기 지연 모델을 재트레이닝하도록
    더 구성되는, 시스템.
  19. 제18항에 있어서,
    상기 프로세서는:
    상기 피쳐 벡터의 복수의 차원에 대응하는 복수의 가중치를 조정하는 단계;
    조정된 복수의 가중치, 상기 조합 경로 및 상기 측정된 지연을 사용하여 상기 제2 트레이닝 데이터 세트를 생성하는 단계; 및
    상기 제2 트레이닝 데이터 세트를 사용하여 상기 지연 모델을 재트레이닝하는 단계
    에 의해 상기 제2 트레이닝 데이터 세트를 사용하여 상기 지연 모델을 재트레이닝하도록 구성되는, 시스템.
  20. 제16항 내지 제19항 중 어느 한 항에 있어서,
    상기 프로세서는:
    상기 조합 경로를 수신하고;
    상기 조합 경로 상의 로직 레벨들의 수, 상기 조합 경로 상의 복수의 와이어들의 총 계층 거리, 상기 조합 경로 상의 상기 복수의 와이어들의 팬아웃들의 합, 상기 조합 경로의 타이밍 경로 타입, 상기 조합 경로가 걸쳐 이어지는 복수의 FPGA들의 레지스터 프리미티브 필 레이트, 및 상기 복수의 FPGA들의 LUT 프리미티브 필 레이트 중 적어도 하나를 사용하여 상기 피쳐 벡터를 생성하도록
    더 구성되는, 시스템.
KR1020237014259A 2020-12-11 2021-12-10 에뮬레이션 시스템들에 대한 머신 러닝 지연 추정 KR20230114264A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202063124332P 2020-12-11 2020-12-11
US63/124,332 2020-12-11
PCT/US2021/062937 WO2022125978A1 (en) 2020-12-11 2021-12-10 Machine learning delay estimation for emulation systems

Publications (1)

Publication Number Publication Date
KR20230114264A true KR20230114264A (ko) 2023-08-01

Family

ID=79602236

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237014259A KR20230114264A (ko) 2020-12-11 2021-12-10 에뮬레이션 시스템들에 대한 머신 러닝 지연 추정

Country Status (5)

Country Link
US (2) US11860227B2 (ko)
EP (1) EP4217904A1 (ko)
KR (1) KR20230114264A (ko)
CN (1) CN116457788A (ko)
WO (1) WO2022125978A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11543452B1 (en) * 2020-09-08 2023-01-03 Xilinx, Inc. Hierarchical access simulation for signaling with more than two state values
US20220335189A1 (en) * 2022-07-01 2022-10-20 Yi Peng Systems and methods for programmable fabric design compilation

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5452239A (en) * 1993-01-29 1995-09-19 Quickturn Design Systems, Inc. Method of removing gated clocks from the clock nets of a netlist for timing sensitive implementation of the netlist in a hardware emulation system
US5457638A (en) * 1993-02-23 1995-10-10 Nec Research Institue, Inc. Timing analysis of VLSI circuits
US6334219B1 (en) * 1994-09-26 2001-12-25 Adc Telecommunications Inc. Channel selection for a hybrid fiber coax network
US7133819B1 (en) * 2000-08-24 2006-11-07 Altera Corporation Method for adaptive critical path delay estimation during timing-driven placement for hierarchical programmable logic devices
US7051312B1 (en) * 2003-06-24 2006-05-23 Xilinx, Inc. Upper-bound calculation for placed circuit design performance
US7437697B2 (en) * 2005-12-16 2008-10-14 International Business Machines Corporation System and method of criticality prediction in statistical timing analysis
US7689954B2 (en) * 2006-05-25 2010-03-30 Wisconsin Alumni Research Foundation Efficient statistical timing analysis of circuits
US8601420B1 (en) * 2009-12-04 2013-12-03 Cadence Design Systems, Inc. Equivalent waveform model for static timing analysis of integrated circuit designs
US10628625B2 (en) * 2016-04-08 2020-04-21 Synopsys, Inc. Incrementally distributing logical wires onto physical sockets by reducing critical path delay

Also Published As

Publication number Publication date
WO2022125978A1 (en) 2022-06-16
US11860227B2 (en) 2024-01-02
US20220187367A1 (en) 2022-06-16
CN116457788A (zh) 2023-07-18
US20240094290A1 (en) 2024-03-21
EP4217904A1 (en) 2023-08-02

Similar Documents

Publication Publication Date Title
US7080365B2 (en) Method and apparatus for simulation system compiler
US10509876B2 (en) Simulation using parallel processors
US20240094290A1 (en) Integrating Machine Learning Delay Estimation in FPGA-Based Emulation Systems
US7076416B2 (en) Method and apparatus for evaluating logic states of design nodes for cycle-based simulation
US11853662B2 (en) Machine-learning enhanced compiler
Beltrame et al. Multi-accuracy power and performance transaction-level modeling
US20210374314A1 (en) Engineering Change Order Scenario Compression by Applying Hybrid of Live and Static Timing Views
US7992112B2 (en) Hardware verification programming description generation apparatus, high-level synthesis apparatus, hardware verification programming description generation method, hardware verification program generation method, control program and computer-readable recording medium
US11709984B2 (en) Automatic sequential retry on compilation failure
US20220066824A1 (en) Adaptive scheduling with dynamic partition-load balancing for fast partition compilation
US10467120B2 (en) Software optimization for multicore systems
US10452393B2 (en) Event-driven design simulation
Hu et al. A performance prototyping approach to designing concurrent software architectures
US20230195982A1 (en) Transformations for multicycle path prediction of clock signals
US11727178B2 (en) Under test pin location driven simultaneous signal grouping and pin assignment
Callanan et al. Estimating Stream Application Performance in Early-Stage System Design
CN114330217B (zh) 被测设计引脚位置驱动的同时的信号分组和引脚分配
Cheng et al. Balancing static islands in dynamically scheduled circuits using continuous petri nets
US20240111660A1 (en) Managing high performance simulation representation of an emulation system
US20240028812A1 (en) Waveform capture using multicycle path properties
Pu et al. Sphinx: A Hybrid Boolean Processor-FPGA Hardware Emulation System
Barringer et al. Rainbow: development, simulation and analysis tools for asynchronous micropipeline hardware design
Kumar et al. ADEPT: A Unified Environment for End-to-End System Design
Dai Coordinated Static and Dynamic Scheduling for High-Quality High-Level Synthesis
KR20240011671A (ko) 로직 복제를 사용하여 io-패드들로부터 비-기능 루프백-경로들 제거