하드웨어 구성 요소들은 클럭 사이클에 민감한 프로토콜을 통해 통신합니다. 하지만 하드웨어 기술 언어(HDL)는 이러한 프로토콜을 표현하거나 독립적으로 개발된 구성 요소들이 이 프로토콜에 대해 합의하는지 확인하는 데 제한적인 지원만을 제공합니다. 구성 요소들이 의견이 다를 경우, 결합된 설계는 비동기식 교환을 수행하거나 진행을 멈출 수 있습니다. 우리는 이러한 실패들을 통신 안전성 위반(communication-safety violations)이라고 부릅니다. 따라서 통신 안전성은 여러 구성 요소 간의 상호작용에 의해 결정되는 전역적 속성입니다. 이는 모듈별로 확인하기 어렵게 만듭니다.
본 논문은 동기식 하드웨어에서 통신 안전성을 모듈별로 검증하기 위한 Anvil의 타입 확장인 Pact를 제시합니다. Pact 타입은 메시지 전달(message-passing), 제어 흐름(control-flow), 그리고 클럭 사이클 동작을 기술합니다. 각 구성 요소는 자신의 타입에 대해 검사됩니다. 호환 가능한 타입들은 구성 요소들이 통신 안전한 시스템으로 결합됨을 보장합니다. Pact는 또한 증분 설계(incremental design)를 지원합니다. 전체 시스템 컨텍스트가 사용 가능하기 전에 서브시스템을 검사할 수 있습니다. 이 검사는 미래의 조합에 남겨진 통신 동작을 포착하는 요약 타입(summary type)을 생성합니다.
주석 부하를 줄이기 위해, Pact는 페이로드 값(payload values)을 추상화하면서도 통신, 타이밍, 제어, 공정성(fairness)을 보존하여 타입을 추론합니다. 이 추론된 타입들은 검사기에게 최적입니다: 어떤 검사 승인된 타입들이 호환성을 증명할 수 있다면, 추론된 타입들 역시 그렇게 할 수 있습니다. 타입 추론과 타입 검사는 결정 가능하며(decidable), 호환성은 건전하고 완전한 알고리즘에 의해 결정됩니다. 우리는 Anvil 컴파일러를 확장하여 Pact를 구현하고, 다음 네 가지 차원에서 평가합니다: 증분 설계 중 통신 오류 감지, 오픈 소스 하드웨어 IP의 10개 클럭 사이클 정확도 번역에서의 표현력, 호환성 검사 시간, 그리고 생성된 하드웨어 오버헤드. Pact는 현실적인 프로토콜을 표현하며 모든 10개의 벤치마크를 합리적인 시간 내에 검증합니다.