Direktori ini berisi sumber GHDL, penganalisa sumber terbuka, kompiler, simulator dan synthesizer (eksperimental) untuk VHDL, sebuah Hardware Description Language (HDL). GHDL bukan penerjemah: ini memungkinkan Anda menganalisis dan menguraikan sumber untuk menghasilkan kode mesin dari desain Anda. Eksekusi program asli adalah satu-satunya cara untuk simulasi berkecepatan tinggi.
Dukungan penuh untuk standar IEEE 1076 VHDL versi 1987, 1993, 2002, dan sebagian untuk revisi 2008 dan 2019.
Dukungan parsial dari PSL.
Dengan menggunakan generator kode (LLVM, GCC atau, hanya x86_64/i386, yang sudah ada di dalamnya), ini jauh lebih cepat daripada simulator yang diinterpretasikan. Ini dapat menangani desain yang sangat besar, seperti leon3/grlib.
GHDL berjalan di GNU/Linux, Windows dan macOS; pada x86
, x86_64
, armv6/armv7/aarch32
, aarch64
dan ppc64
. Anda dapat dengan bebas mendownload aset nightly, menggunakan image OCI (alias container Docker/Podman), atau mencoba membuatnya di mesin Anda sendiri (lihat 'Mendapatkan GHDL' di bawah).
Dapat menulis bentuk gelombang ke file GHW, VCD atau FST. Dikombinasikan dengan penampil gelombang berbasis GUI dan editor teks yang bagus, GHDL adalah alat yang sangat ampuh untuk menulis, menguji, dan mensimulasikan kode Anda.
Simulasi bersama dengan aplikasi asing didukung melalui Verilog Procedural Interface (VPI) dan/atau VHPIDIRECT. Lihat ghdl.github.io/ghdl-cosim.
Dapat mensintesis desain VHDL yang rumit ke dalam netlist VHDL 1993, yang dapat digunakan secara implisit atau eksplisit dalam kerangka sintesis sumber terbuka atau vendor.
GHDL adalah perangkat lunak gratis:
GHDL dirancang untuk berintegrasi secara mulus dengan beberapa alat sumber terbuka populer, memungkinkan pengguna memanfaatkan kemampuan tambahan untuk alur kerja simulasi dan sintesis.
Salah satu integrasi utamanya adalah dengan Yosys, alat sintesis sumber terbuka terkemuka. Dengan menggunakan plugin ghdl-yosys, GHDL dapat digunakan sebagai front-end untuk Yosys, memungkinkan pengguna untuk mensintesis desain VHDL secara langsung. Hal ini memungkinkan peralihan dari simulasi ke sintesis tanpa meninggalkan lingkungan GHDL, sehingga menyederhanakan aliran desain.
GHDL juga terintegrasi dengan cocotb, kerangka kerja simulasi bersama berbasis coroutine yang memungkinkan pengujian desain VHDL berbasis Python. Ini sangat berguna untuk menulis testbench yang kompleks dengan Python dan berinteraksi dengan simulasi VHDL secara real-time.
Untuk verifikasi, GHDL mendukung integrasi dengan kerangka kerja seperti OSVVM, UVVM, dan VUnit, memberikan pengguna rangkaian alat lengkap untuk memverifikasi desain VHDL. Pustaka verifikasi ini memungkinkan teknik pengujian lanjutan seperti verifikasi acak terbatas, cakupan fungsional, dan pengujian regresi otomatis.
Bersama-sama, integrasi pihak ketiga ini menjadikan GHDL alat komprehensif untuk desain digital, simulasi, verifikasi, dan sintesis, cocok untuk pengembang individu dan tim besar.
Paket yang sudah dibuat sebelumnya:
Menggunakan Docker :
Bagi mereka yang lebih menyukai containerisasi, GHDL juga tersedia sebagai image Docker. Hal ini sangat berguna jika Anda ingin menghindari pengelolaan dependensi secara manual atau memerlukan lingkungan yang konsisten di berbagai mesin. Anda dapat menggunakan container dari ghdl/docker atau hdl/containers, keduanya menawarkan lingkungan yang telah dikonfigurasi sebelumnya dengan GHDL terinstal. Menjalankan GHDL di dalam container Docker memastikan bahwa pengaturan Anda tetap terisolasi dari sistem host Anda, sehingga lebih mudah untuk dipelihara dan direplikasi di berbagai platform. Opsi ini ideal bagi pengguna yang mencari instalasi yang efisien dan tidak merepotkan.
Membangun GHDL dari Sumber :
Pengguna tingkat lanjut dapat memilih untuk membangun GHDL dari sumber, memungkinkan penyesuaian dan akses ke fitur eksperimental. Membangun dari sumber juga dapat berguna untuk platform atau konfigurasi yang tidak tercakup dalam paket yang dibuat sebelumnya. Panduan Membangun GHDL memberikan instruksi terperinci tentang cara mengkompilasi GHDL, termasuk memilih backend pilihan Anda (LLVM, GCC, atau mcode). Proses ini memberi pengguna kendali penuh atas pengaturan mereka dan memungkinkan mereka menyesuaikan GHDL dengan kebutuhan spesifik mereka.
Catatan Khusus Platform :
apt
, dnf
, atau pacman
, tergantung pada distribusinya. Instalasi biasanya mudah, dan paket yang dibuat sebelumnya diperbarui secara berkala.GHDL menawarkan beberapa keunggulan yang menjadikannya alat yang ampuh untuk simulasi dan sintesis VHDL. Salah satu manfaat utamanya adalah pembuatan kode aslinya, yang memungkinkan waktu simulasi lebih cepat dibandingkan dengan simulator yang diinterpretasikan. Peningkatan performa ini terutama terlihat pada desain yang besar dan kompleks, yang mana kecepatan simulasi dapat menjadi faktor penting.
Selain performa, GHDL sangat serbaguna. Ini mendukung beberapa revisi standar VHDL, termasuk versi 1987, 1993, 2002, 2008, dan 2019. Kompatibilitas yang luas ini membuat GHDL cocok untuk proyek lama serta desain mutakhir. Baik Anda bekerja dengan standar VHDL lama atau revisi terbaru, GHDL memberikan fleksibilitas untuk menangani semuanya.
Manfaat penting lainnya adalah dukungan lintas platform GHDL. Ini berjalan pada sistem operasi utama seperti Linux, Windows, dan macOS, dan mendukung berbagai arsitektur seperti x86, x86_64, ARM, dan PPC64. Hal ini memungkinkan pengembang untuk menggunakan GHDL pada berbagai konfigurasi perangkat keras, sehingga dapat diakses oleh banyak pengguna.
Integrasi GHDL dengan alat sumber terbuka populer seperti Yosys untuk sintesis dan cocotb untuk verifikasi semakin meningkatkan kegunaannya. Integrasi ini memungkinkan pengguna untuk memperluas kemampuan GHDL melampaui simulasi, menjadikannya solusi komprehensif untuk alur kerja desain, verifikasi, dan sintesis VHDL.
GHDL menyambut baik kontribusi dari komunitas. Baik Anda tertarik untuk menyempurnakan dokumentasi, memperbaiki bug, atau menambahkan fitur baru, ada banyak cara untuk terlibat. Kontribusi adalah cara terbaik untuk membantu menyempurnakan alat ini dan mempelajari lebih lanjut cara kerja GHDL secara internal.
Inilah cara Anda dapat mulai berkontribusi:
Temukan masalah untuk ditangani : Lihat masalah yang terbuka di repositori GitHub. Masalah sering kali diberi label berdasarkan tingkat kesulitan atau jenisnya (misalnya, "masalah pertama yang bagus" untuk pemula). Anda juga dapat mengusulkan ide atau penyempurnaan Anda sendiri.
Garpu dan kloning repositori : Setelah Anda memilih masalah yang akan ditangani, fork repositori GHDL ke akun GitHub Anda sendiri. Kloning repositori bercabang ke mesin lokal Anda untuk melakukan perubahan.
Buat cabang baru : Merupakan praktik yang baik untuk membuat cabang baru untuk setiap masalah atau fitur yang sedang Anda kerjakan. Hal ini membantu menjaga perubahan Anda tetap terisolasi dan memudahkan pengelola untuk meninjau pekerjaan Anda.
Kirimkan permintaan tarik : Setelah membuat perubahan dan mengkomitnya ke cabang Anda, kirimkan permintaan tarik (PR) ke repositori GHDL utama. Pastikan untuk menyertakan deskripsi yang jelas tentang alamat PR Anda dan konteks atau langkah pengujian apa pun yang relevan.
Untuk pedoman lebih rinci, lihat Panduan Berkontribusi kami (saat dibuat), yang mencakup standar pengkodean, instruksi pengujian, dan praktik terbaik untuk memberikan kontribusi.
Alat CLI memungkinkan analisis, kompilasi, simulasi dan sintesis (eksperimental) untuk menghasilkan netlist VHDL 1993. Itu ditulis dalam Ada dan C, dan tiga backend berbeda didukung, yang terkadang diberi nama ghdl_mcode
, ghdl_gcc
dan ghdl_llvm
. Ini adalah titik masuk bagi sebagian besar pengguna.
[eksperimental] ghdl-yosys-plugin adalah integrasi GHDL sebagai modul plugin frontend untuk Yosys Open SYnthesis Suite, yang menggunakan perpustakaan libghdl
(dibangun dengan --enable-synth
).
ghdl-ls
(bagian dari pyGHDL, lihat di bawah) mengimplementasikan Language Server Protocol (LSP) dengan Python. Fitur analisis VHDL yang disediakan oleh GHDL diakses melalui libghdl
. Ini dapat diintegrasikan dalam editor teks atau IDE, seperti Vim, Emacs, Atom atau Visual Studio Code. Lihat ghdl/server-bahasa-ghdl.
ghdl-ls
. libghdl
adalah perpustakaan bersama yang menyertakan subset fitur reguler ditambah beberapa fitur untuk digunakan oleh alat ekstensi (yaitu pyGHDL
). Ini dibuat bersama dengan GHDL biasa dan mendukung kode yang tidak dapat disintesis dan dapat disintesis. Meskipun demikian, ini bukan untuk pengguna, tetapi untuk alat yang dibangun di atas inti. Ketika dikonfigurasi bersama --enable-synth
, perpustakaan bersama ini juga menyertakan fitur sintesis.
pyGHDL adalah antarmuka Python ke libghdl
. Saat ini, ini hanya digunakan oleh ghdl-ls
; namun, ini dapat berguna bagi pengguna tingkat lanjut yang ingin membangun utilitas Python berdasarkan GHDL. Ada pekerjaan yang sedang berjalan untuk mengikat libghdl ke pyVHDLModel (lihat pyGHDL.dom
).
ghdl_simul
, yang mendukung simulasi yang ditafsirkan, tersedia karena alasan historis dan hanya untuk pengembangan/debugging. Ini sangat lambat dibandingkan dengan simulasi kompilasi 'biasa' dan tidak semua fitur didukung.