GHDL backends ============= In a deviation from upstream which installs a single backend selected at compile time, the Debian packaging offers all three backends and also allows them all to be installed at the same time. GHDL offers three machine code generation backends: one based on GCC, one using the LLVM compiler suite and a GHDL specific one called mcode. These are available in the ghdl-gcc, ghdl-llvm and ghdl-mcode packages respectively. Both the GCC and LLVM backends create highly optimized code for excellent simulation performance while simulations compiled with the GCC backend also allow coverage testing using gcov. The mcode backend creates less performant code but makes up for it with much faster compilation. It is therefore preferable for smaller projects without large or long running simulations. The GHDL executable /usr/bin/ghdl is a wrapper that will execute the first installed backend it finds in the order mcode, gcc, llvm. If you want to run GHDL with a specific backend you can directly run their executable, named ghdl-mcode, ghdl-gcc and ghdl-llvm respectively. Alternatively, you can run /usr/bin/ghdl with the GHDL_BACKEND environment variable set to mcode, gcc or llvm to select a backend. If the backend in GHDL_BACKEND is not installed or invalid, the wrapper will silently revert to selecting the first installed backend it finds. Build profiles ============== When building the Debian package from source, it is possible to skip building any of the backends using the build profile mechanism. The profiles are named pkg.ghdl.nogcc, pkg.ghdl.nollvm and pkg.ghdl.nomcode.