하드웨어 에뮬레이션

섬네일|right|이코스 NSIM-64 하드웨어 시뮬레이션 가속기.
집적 회로 설계에서 **하드웨어 에뮬레이션**(Hardware emulation)은 하나 이상의 하드웨어(일반적으로 설계 중인 시스템)의 동작을 다른 하드웨어, 일반적으로 특수 목적 에뮬레이션 시스템으로 모방하는 과정이다. 에뮬레이션 모델은 일반적으로 하드웨어 기술 언어(예: 베릴로그) 소스 코드를 기반으로 하며, 이는 에뮬레이션 시스템에서 사용되는 형식으로 컴파일된다. 목표는 일반적으로 설계 중인 시스템의 디버깅 및 기능 검증이다. 종종 에뮬레이터는 아직 구축되지 않은 칩 대신 작동하는 대상 시스템에 연결할 수 있을 만큼 충분히 빠르므로 전체 시스템을 실제 데이터로 디버깅할 수 있다. 이것은 인 서킷 에뮬레이션의 특정 사례이다.

때로는 하드웨어 에뮬레이션이 소프트웨어 에뮬레이션의 기능을 지원하는 하드웨어 프로세서가 있는 확장 카드와 같은 하드웨어 장치와 혼동될 수 있다. 예를 들어, x86 칩이 있는 오래된 도터보드를 사용하여 x86 운영 체제가 다른 프로세서 제품군의 마더보드에서 실행될 수 있도록 하는 경우가 있다.

## 서론

실리콘 집적 회로의 재설계 및 스테핑의 가장 큰 부분은 설계 과정의 RTL 단계에서 의도치 않게 도입된 기능 오류 및 버그로 인한 것이다. 따라서 포괄적인 기능 검증은 개발 비용을 줄이고 제품을 적시에 출시하는 데 중요하다. 설계의 기능 검증은 대부분 논리 시뮬레이션 및 필드 프로그래머블 게이트 어레이(FPGA) 프로토타이핑을 사용하여 수행된다. 각각 장단점이 있으며 종종 둘 다 사용된다. 논리 시뮬레이션은 쉽고, 정확하며, 유연하고, 저렴하다. 그러나 시뮬레이션은 종종 대규모 설계에 충분히 빠르지 않으며, 하드웨어 설계를 대상으로 애플리케이션 소프트웨어를 실행하기에는 거의 항상 너무 느리다. FPGA 기반 프로토타입은 빠르고 저렴하지만, 대규모 설계를 여러 FPGA에 구현하는 데 필요한 시간은 매우 길 수 있으며 오류가 발생하기 쉽다. 설계 결함을 수정하기 위한 변경 사항도 구현하는 데 오랜 시간이 걸리며 보드 배선 변경이 필요할 수 있다. 전통적인 공급업체 도구를 사용하면 FPGA 프로토타입은 디버깅 기능이 거의 없으며, FPGA 내부의 신호를 실시간으로 탐색하는 것은 매우 어렵고, 프로브를 이동하기 위해 FPGA를 다시 컴파일하는 데 너무 오랜 시간이 걸린다. 이는 신호 가시성 제한을 제거하는 고급 FPGA 프로토타입 디버그 도구의 등장으로 변화하고 있다. 일반적인 절충안은 버그와 수정이 빈번한 검증 과정 초기에 시뮬레이션을 사용하고, 설계가 기본적으로 완료되고 나머지 시스템 수준 버그를 발견하기 위한 충분한 테스트를 위해 속도가 필요한 개발 주기 말기에 프로토타이핑을 사용하는 것이다. FPGA 프로토타이핑은 소프트웨어 테스트에도 인기가 있다.

시뮬레이션 가속은 시뮬레이션의 성능 단점을 어느 정도 해결할 수 있다. 여기서는 설계가 하드웨어 가속기에 매핑되어 훨씬 빠르게 실행되고 테스트벤치(및 모든 행동 설계 코드)는 워크스테이션의 시뮬레이터에서 계속 실행된다. 고대역폭, 저지연 채널이 워크스테이션을 가속기에 연결하여 테스트벤치와 설계 간에 신호 데이터를 교환한다. 암달의 법칙에 따라 체인에서 가장 느린 장치가 달성 가능한 속도를 결정한다. 일반적으로 이는 시뮬레이터의 테스트벤치이다. 매우 효율적인 테스트벤치(C 또는 트랜잭션 기반으로 작성됨)의 경우 채널이 병목 현상이 될 수 있다. 경우에 따라 트랜잭션 수준 테스트벤치는 에뮬레이션되는 설계에 "실시간" 자극만큼 많은 데이터를 공급할 수 있다.

인 서킷 에뮬레이션은 FPGA 프로토타이핑의 구현 시간을 어느 정도 개선하며, 포괄적이고 효율적인 디버깅 기능을 제공한다. 에뮬레이션은 FPGA 프로토타입($75K)에 비해 실행 속도와 높은 비용($1M 이상)을 희생한다. 다른 관점에서 에뮬레이션을 보면, 시뮬레이션된 테스트벤치 대신 "실시간" 자극을 대체함으로써 가속의 성능을 향상시킨다. 이 자극은 대상 시스템(개발 중인 제품) 또는 테스트 장비에서 올 수 있다. 시뮬레이션 속도의 10,000배에서 100,000배에 달하는 에뮬레이션은 포괄적인 하드웨어 디버그 환경을 제공하면서 애플리케이션 소프트웨어를 테스트할 수 있도록 한다.

## 시뮬레이션 vs. 에뮬레이션/프로토타이핑 디버깅

시뮬레이션과 프로토타이핑은 두 가지 다른 실행 스타일을 포함한다. 시뮬레이션은 RTL 코드를 직렬로 실행하는 반면 프로토타입은 완전히 병렬로 실행한다. 이는 디버깅의 차이로 이어진다. 시뮬레이션에서:
*사용자는 중단점을 설정하고 시뮬레이션을 중지하여 설계 상태를 검사하고, 설계와 상호 작용하며, 시뮬레이션을 재개할 수 있다.
*사용자는 코드의 일부만 실행된 상태에서 실행을 "주기 중단"할 수 있다.
*사용자는 언제든지 설계의 모든 신호와 모든 메모리 위치의 내용을 볼 수 있다.
*사용자는 심지어 시간을 되돌리고( 체크포인트를 저장한 경우) 다시 실행할 수 있다.

프로토타입으로:
*사용자는 가시성을 위해 로직 분석기를 사용하며, 따라서 미리 결정한 제한된 수의 신호만 볼 수 있다(프로브를 클리핑하여). 이는 Certus와 같이 10,000개 이상의 내부 신호에 대한 완전한 가시성을 제공하는 새로운 FPGA 프로토타입 도구로 인해 변화하고 있다.
*로직 분석기가 트리거될 때 대상은 멈추지 않으므로, 사용자가 프로브 또는 트리거 조건을 변경할 때마다 환경을 재설정하고 처음부터 다시 시작해야 한다.
*관찰을 위해 특정 신호를 사용할 수 있도록 RTL 설계에 프로브가 직접 추가된다. 시스템이 실행될 때, 각 계측된 신호에 연결된 RTL 기반 프로브는 각 클록 주기에서 신호 값을 수집한다. 데이터는 FPGA 블록 RAM의 추적 버퍼에 저장된다. 프로토타입에 연결된 분석기가 정보를 다운로드하여 사용자에게 효율적인 디버깅을 위한 시스템에 대한 오프라인 가시성을 제공한다.

가속 및 에뮬레이션은 RTL 실행 및 디버깅 측면에서 프로토타이핑 및 실리콘과 더 유사하며, 전체 설계가 실리콘에서와 같이 동시에 실행되기 때문이다. 동일한 하드웨어가 종종 시뮬레이션 가속과 인 서킷 에뮬레이션을 모두 제공하는 데 사용되므로, 이러한 시스템은 이 두 가지 매우 다른 디버깅 스타일을 혼합하여 제공한다.

하이엔드 하드웨어 에뮬레이터는 논리 시뮬레이터에서 찾을 수 있는 많은 기능을 갖춘 디버깅 환경을 제공하며, 경우에 따라 디버깅 기능을 능가하기도 한다.

*사용자는 중단점을 설정하고 에뮬레이션을 중지하여 설계 상태를 검사하고, 설계와 상호 작용하며, 에뮬레이션을 재개할 수 있다. 에뮬레이터는 항상 주기 경계에서 멈춘다.
*사용자는 실행 전에 프로브를 설정할 필요 없이 설계의 모든 신호 또는 메모리 내용을 볼 수 있다. 과거 시간에도 가시성이 제공되지만, 과거에 표시할 수 있는 시간의 양은 경우에 따라 에뮬레이터의 추적 메모리 깊이로 제한될 수 있다.
*사용자는 심지어 시간을 되돌리고( 체크포인트를 저장한 경우) 다시 실행할 수 있다.
*높은 비용 때문에 에뮬레이터는 많은 개발자의 손이 닿지 않는 곳에 있어 고급 FPGA 프로토타이핑 플랫폼 및 디버그 도구의 등장을 이끌었다.

## 에뮬레이션 및 2상태 논리

시뮬레이션과 가속 및 에뮬레이션의 또 다른 차이점은 가속기가 구현에 하드웨어를 사용한다는 결과이다. 즉, 패브리케이션될 때 실리콘이 작동하는 방식과 동일하게 두 가지 논리 상태만 가진다. 이는 다음을 의미한다.
*X-상태 초기화 분석에는 유용하지 않다.
*강도 해상도를 분석할 수 없거나, 적어도 컴파일 시간에 정적으로 수행해야 한다.
*에뮬레이터는 정밀한 회로 타이밍을 모델링하지 않으므로, 레이스 조건이나 설정 및 홀드 시간 위반을 찾지 못할 가능성이 높다.

이러한 작업은 논리 시뮬레이션 또는 정적 타이밍 분석 도구를 사용하여 적절하게 수행된다.

## 에뮬레이션 대 프로토타이핑

에뮬레이터와 FPGA 프로토타이핑 시스템 간의 핵심적인 전통적인 차이점은 에뮬레이터가 풍부한 디버그 환경을 제공하는 반면, 프로토타이핑 시스템은 디버그 기능이 거의 없거나 전혀 없으며 주로 설계가 디버그된 후 시스템 분석 및 소프트웨어 개발을 위해 여러 복사본을 만드는 데 사용된다는 점이었다. 작은 FPGA LUT 영향으로 완전한 RTL 신호 가시성을 가능하게 하고, 깊은 캡처 깊이를 허용하며, 다중 칩 및 클록 도메인 분석을 제공하여 에뮬레이터와 비견할 만한 효율적인 디버깅을 가능하게 하는 새로운 도구들이 등장하고 있다.

## 같이 보기
* 하드웨어 보조 가상화
* 에뮬레이터
* 인 서킷 에뮬레이터
* 백그라운드 디버그 모드 인터페이스
* 예시:
** 마이크로프로세서 에뮬레이터 HP 64000 (다른 CPU)

## 각주

*전자 설계 자동화 통합 회로 핸드북, Lavagno, Martin, Scheffer 저,  위 요약은 허가를 받아 파생된 분야에 대한 조사.

## 더 읽어보기
*  엔비디아 에뮬레이션 연구소 내부 미리보기
* 케이던스 팔라디움 Z1 엔터프라이즈 에뮬레이션 플랫폼
* 시놉시스 제부 서버 에뮬레이터
* 멘토 그래픽스 벨로체 에뮬레이션 시스템

분류:전자 회로 검증