이 디렉토리에는 HDL(하드웨어 설명 언어)인 VHDL용 오픈 소스 분석기, 컴파일러, 시뮬레이터 및 (실험적) 합성기인 GHDL의 소스가 포함되어 있습니다. GHDL은 해석기가 아닙니다. 이를 통해 설계에서 기계어 코드를 생성하기 위한 소스를 분석하고 정교하게 만들 수 있습니다. 기본 프로그램 실행은 고속 시뮬레이션을 위한 유일한 방법입니다.
IEEE 1076 VHDL 표준의 1987, 1993, 2002 버전을 완벽하게 지원하고 2008 및 2019 개정판을 부분적으로 지원합니다.
PSL을 부분적으로 지원합니다.
코드 생성기(LLVM, GCC 또는 x86_64/i386만 내장)를 사용하면 해석된 시뮬레이터보다 훨씬 빠릅니다. leon3/grlib과 같은 매우 큰 디자인을 처리할 수 있습니다.
GHDL은 GNU/Linux, Windows 및 macOS에서 실행됩니다. x86
, x86_64
, armv6/armv7/aarch32
, aarch64
및 ppc64
. 야간 자산을 자유롭게 다운로드하거나, OCI 이미지(Docker/Podman 컨테이너라고도 함)를 사용하거나, 자체 머신에서 구축해 볼 수 있습니다(아래 'GHDL 가져오기' 참조).
GHW, VCD 또는 FST 파일에 파형을 쓸 수 있습니다. GUI 기반 파형 뷰어 및 우수한 텍스트 편집기와 결합된 GHDL은 코드 작성, 테스트 및 시뮬레이션을 위한 매우 강력한 도구입니다.
VPI(Verilog Procedural Interface) 및/또는 VHPIDIRECT를 통해 외부 애플리케이션과의 공동 시뮬레이션이 지원됩니다. ghdl.github.io/ghdl-cosim을 참조하세요.
임의로 복잡한 VHDL 설계를 VHDL 1993 넷리스트로 합성할 수 있으며, 이는 오픈 소스 또는 공급업체 합성 프레임워크에서 암시적으로 또는 명시적으로 사용될 수 있습니다.
GHDL은 무료 소프트웨어입니다:
GHDL은 널리 사용되는 여러 오픈 소스 도구와 원활하게 통합되도록 설계되어 사용자가 시뮬레이션 및 합성 워크플로우 모두에 추가 기능을 활용할 수 있습니다.
주요 통합 중 하나는 선도적인 오픈 소스 합성 도구인 Yosys와의 통합입니다. ghdl-yosys-plugin을 사용하면 GHDL을 Yosys의 프런트 엔드로 사용할 수 있어 사용자가 VHDL 디자인을 직접 합성할 수 있습니다. 이를 통해 GHDL 환경을 벗어나지 않고도 시뮬레이션에서 합성으로 이동할 수 있어 설계 흐름이 간소화됩니다.
GHDL은 또한 VHDL 설계의 Python 기반 테스트를 허용하는 코루틴 기반 공동 시뮬레이션 프레임워크인 cocotb와 통합됩니다. 이는 Python으로 복잡한 테스트벤치를 작성하고 VHDL 시뮬레이션과 실시간으로 상호 작용하는 데 특히 유용합니다.
검증을 위해 GHDL은 OSVVM, UVVM 및 VUnit과 같은 프레임워크와의 통합을 지원하여 사용자에게 VHDL 설계 검증을 위한 전체 도구 모음을 제공합니다. 이러한 검증 라이브러리는 제한된 무작위 검증, 기능 적용 범위 및 자동화된 회귀 테스트와 같은 고급 테스트 기술을 지원합니다.
이러한 타사 통합을 통해 GHDL은 개인 개발자와 대규모 팀 모두에게 적합한 디지털 설계, 시뮬레이션, 검증 및 합성을 위한 포괄적인 도구가 됩니다.
사전 구축된 패키지:
도커 사용 :
컨테이너화를 선호하는 사람들을 위해 GHDL은 Docker 이미지로도 제공됩니다. 이는 종속성을 수동으로 관리하지 않으려거나 여러 컴퓨터에서 일관된 환경이 필요한 경우 특히 유용합니다. ghdl/docker 또는 hdl/containers의 컨테이너를 사용할 수 있으며, 둘 다 GHDL이 설치된 사전 구성된 환경을 제공합니다. Docker 컨테이너 내에서 GHDL을 실행하면 설정이 호스트 시스템과 격리된 상태로 유지되므로 다양한 플랫폼에서 더 쉽게 유지 관리하고 복제할 수 있습니다. 이 옵션은 간편하고 번거롭지 않은 설치를 원하는 사용자에게 이상적입니다.
소스에서 GHDL 구축 :
고급 사용자는 소스에서 GHDL을 구축하도록 선택하여 실험적 기능에 대한 사용자 정의 및 액세스를 허용할 수 있습니다. 소스에서 빌드하는 것은 사전 빌드된 패키지에서 다루지 않는 플랫폼이나 구성에도 유용할 수 있습니다. GHDL 구축 가이드는 선호하는 백엔드(LLVM, GCC 또는 mcode) 선택을 포함하여 GHDL을 컴파일하는 방법에 대한 자세한 지침을 제공합니다. 이 프로세스를 통해 사용자는 자신의 설정을 완벽하게 제어할 수 있으며 특정 요구 사항에 맞게 GHDL을 조정할 수 있습니다.
플랫폼별 참고 사항 :
apt
, dnf
또는 pacman
과 같은 일반적인 패키지 관리자를 사용하여 설치할 수 있습니다. 설치는 일반적으로 간단하며 사전 빌드된 패키지는 정기적으로 업데이트됩니다.GHDL은 VHDL 시뮬레이션 및 합성을 위한 강력한 도구가 되는 몇 가지 장점을 제공합니다. 주요 이점 중 하나는 해석된 시뮬레이터에 비해 더 빠른 시뮬레이션 시간을 허용하는 기본 코드 생성입니다. 이러한 성능 향상은 시뮬레이션 속도가 중요한 요소가 될 수 있는 크고 복잡한 설계에서 특히 두드러집니다.
성능 외에도 GHDL은 매우 다재다능합니다. 1987, 1993, 2002, 2008 및 2019 버전을 포함하여 VHDL 표준의 여러 개정판을 지원합니다. 이러한 광범위한 호환성으로 인해 GHDL은 레거시 프로젝트는 물론 최첨단 설계에도 적합합니다. 이전 VHDL 표준을 사용하든 최신 개정판을 사용하든 관계없이 GHDL은 모든 표준을 처리할 수 있는 유연성을 제공합니다.
또 다른 중요한 이점은 GHDL의 크로스 플랫폼 지원입니다. Linux, Windows 및 macOS와 같은 주요 운영 체제에서 실행되며 x86, x86_64, ARM 및 PPC64와 같은 다양한 아키텍처를 지원합니다. 이를 통해 개발자는 다양한 하드웨어 구성에서 GHDL을 사용할 수 있으므로 광범위한 사용자가 액세스할 수 있습니다.
합성을 위한 Yosys 및 검증을 위한 cocotb와 같은 인기 있는 오픈 소스 도구와 GHDL의 통합은 그 유용성을 더욱 향상시킵니다. 이러한 통합을 통해 사용자는 GHDL의 기능을 시뮬레이션 이상으로 확장하여 VHDL 설계, 검증 및 합성 워크플로우를 위한 포괄적인 솔루션으로 만들 수 있습니다.
GHDL은 커뮤니티의 기여를 환영합니다. 문서 개선, 버그 수정, 새로운 기능 추가에 관심이 있다면 다양한 방법으로 참여할 수 있습니다. 기여는 도구를 개선하고 GHDL이 내부적으로 어떻게 작동하는지 자세히 알아볼 수 있는 좋은 방법입니다.
기여를 시작하는 방법은 다음과 같습니다.
작업할 문제 찾기 : GitHub 저장소에서 미해결 문제를 확인하세요. 문제에는 난이도나 유형별로 라벨이 지정되는 경우가 많습니다(예: 초보자를 위한 "좋은 첫 번째 문제"). 자신만의 아이디어나 개선 사항을 제안할 수도 있습니다.
저장소 포크 및 복제 : 작업할 문제를 선택하고 나면 GHDL 저장소를 자신의 GitHub 계정으로 포크하십시오. 변경하려면 포크된 저장소를 로컬 머신에 복제하세요.
새 분기 만들기 : 작업 중인 각 문제나 기능에 대해 새 분기를 만드는 것이 좋습니다. 이렇게 하면 변경 사항을 격리된 상태로 유지하고 관리자가 작업을 더 쉽게 검토할 수 있습니다.
풀 요청 제출 : 변경 사항을 적용하고 이를 브랜치에 커밋한 후 기본 GHDL 저장소에 풀 요청(PR)을 제출합니다. PR이 다루는 내용과 관련 컨텍스트 또는 테스트 단계에 대한 명확한 설명을 포함해야 합니다.
더 자세한 지침은 코딩 표준, 테스트 지침, 기여 모범 사례가 포함된 기여 가이드(생성 시)를 참조하세요.
CLI 도구를 사용하면 VHDL 1993 넷리스트 생성을 위한 분석, 컴파일, 시뮬레이션 및 (실험적) 합성이 가능합니다. Ada와 C로 작성되었으며 ghdl_mcode
, ghdl_gcc
및 ghdl_llvm
이라는 세 가지 다른 백엔드가 지원됩니다. 이는 대부분의 사용자를 위한 진입점입니다.
[실험적] ghdl-yosys-plugin은 libghdl
라이브러리( --enable-synth
로 구축)를 사용하는 Yosys Open SYnesis Suite용 프런트엔드 플러그인 모듈로 GHDL을 통합한 것입니다.
ghdl-ls
(pyGHDL의 일부, 아래 참조)는 Python에서 LSP(언어 서버 프로토콜)를 구현합니다. GHDL에서 제공하는 VHDL 분석 기능은 libghdl
통해 액세스됩니다. 이는 Vim, Emacs, Atom 또는 Visual Studio Code와 같은 텍스트 편집기나 IDES에 통합될 수 있습니다. ghdl/ghdl-언어-서버를 참조하세요.
ghdl-ls
인터페이스하여 VHDL에 대한 언어 지원을 제공하기 위한 VSC(Visual Studio Code)의 확장입니다. libghdl
은 일반 기능의 하위 집합과 확장 도구(예: pyGHDL
)에서 사용할 일부 기능을 포함하는 공유 라이브러리입니다. 이는 일반 GHDL과 함께 구축되었으며 합성 불가능한 코드와 합성 가능한 코드를 모두 지원합니다. 그럼에도 불구하고 이는 사용자를 위한 것이 아니라 코어 위에 구축된 도구를 위한 것입니다. --enable-synth
와 함께 구성하면 이 공유 라이브러리에는 합성 기능도 포함됩니다.
pyGHDL은 libghdl
에 대한 Python 인터페이스입니다. 현재는 ghdl-ls
에서만 사용됩니다. 그러나 GHDL을 기반으로 Python 유틸리티를 구축하려는 고급 사용자에게는 유용할 수 있습니다. libghdl을 pyVHDLModel에 바인딩하는 작업이 진행 중입니다( pyGHDL.dom
참조).
ghdl_simul
역사적인 이유로 개발/디버깅용으로만 사용할 수 있습니다. '일반' 컴파일된 시뮬레이션에 비해 속도가 매우 느리며 모든 기능이 지원되는 것은 아닙니다.