하드웨어 기술 언어 (Hardware Description Language)
한 줄 정의: 디지털 회로의 구조와 동작을 코드로 기술해 합성과 검증에 쓰는 전용 언어입니다.
쉽게 풀면
복잡한 디지털 회로를 게이트 하나하나 그려서 설계하는 것은 현실적으로 불가능합니다. 대신 신호가 클럭마다 어떻게 변하는지를 코드로 적어 두면, 합성 도구가 이를 실제 논리회로로 바꿔 줍니다. 이런 용도의 언어가 하드웨어 기술 언어이고, 베릴로그와 VHDL이 대표적입니다.
왜 중요한가
FPGA와 주문형 반도체 설계의 표준 입력 형식이라, 디지털 시스템 연구의 구현 결과는 거의 언제나 이 언어로 작성됩니다. 설계와 동시에 시뮬레이션으로 검증할 수 있어, 제작 전에 기능을 확인하는 개발 흐름 전체가 이 언어를 중심으로 짜여 있습니다.
논문에서는 이렇게 쓰입니다
"제안한 연산 구조를 베릴로그로 기술하고 합성한 결과, 목표 동작 주파수에서 요구 자원량 이내로 구현됨을 확인하였다."
알고리즘을 실제 하드웨어로 만들 수 있는지를 코드로 구현하고 합성 결과의 속도와 자원 사용량으로 입증하는 전형적인 검증 방식입니다.
조금 더 깊게 보면
설계는 보통 레지스터 전송 수준으로 기술해, 레지스터 사이를 오가는 데이터의 흐름과 조합 논리를 표현합니다. 중요한 점은 이 언어가 순차적으로 실행되는 프로그램이 아니라 동시에 동작하는 회로를 기술한다는 것이며, 그래서 문장의 순서가 실행 순서를 뜻하지 않습니다. 또한 실제 회로로 변환되는 합성 가능 구문과, 시뮬레이션에서 자극을 주거나 결과를 확인하는 데만 쓰이는 검증용 구문이 구분됩니다.
주의할 점
소프트웨어 언어처럼 생각해 순차 실행을 가정하면 시뮬레이션에서는 맞게 보이지만 합성 후에는 전혀 다르게 동작하는 결과가 나옵니다. 또한 합성 도구와 대상 소자에 따라 같은 코드가 다른 회로로 구현되므로, 타이밍 제약을 별도로 지정해 확인해야 합니다.