GHDL query

J

John Williams

Hi folks,

Does anybody have any experience with GHDL? For those who don't know,
it's a VHDL compiler based on the gcc (GNU Compiler Collection) framework.

http://ghdl.free.fr

It's free, unlike modelsim et al. It can export the VCD file format for
viewing in various wave viewers and so on. Not sure how its performance
compares with other commercial simulators.

I've downloaded it and compiled trivial examples (adders etc), and it
seems to work OK. Just wondering if any body has any deeper experience
or comments on it?

Thanks,

John
 
F

Felix Bertram

Does anybody have any experience with GHDL?


GHDL is in good shape. I have successfully simulated some 'real-world'
FPGA projects of about 100k gates. I was easily able to compile and
simulate all my testbenches and rtl code. I had a few problems compiling
the Xilinx Unisim, though. Tristan is very responsive and working hard
on fixing any issue that is reported to him, so I am sure that these
woes are sorted out soon.

It can export the VCD file format
for viewing in various wave viewers and so on.


GHDL is creating VCDs with a resoultion of fs, which may create problems
with some tools. Currently only the following signal types are dumped to
the VCD: bit, std_ulogic, std_logic, bit_vector, std_logic_vector, std_
ulogic_vector.

I working on integrating GHDL into IVI. IVI is a graphical frontend,
which will allow for interactive simulation and Tcl scripting. IVI is
currently making rapid progress with new features nearly every week.
More info on IVI can be found here:
http://ivi.sourceforge.net/

IVI was originally created to support the Icarus Verilog simulator.
Icarus Verilog is without doubt a very good simulator with very good
performance. More info here:
http://www.icarus.com/eda/verilog/

Once GHDL is integrated with IVI, the result will be a nice GPL'ed and
language-neutral simulator.

Not sure how its
performance compares with other commercial simulators.


currently GHDL is a little slow, so there is definitely a need to work
on optimization. But I am very confident that we can achieve this with
the help of a few volunteers.


Any comments welcome,
best regards


Felix
 
T

Tuukka Toivonen

Yeah, I made some debian packages for an old version (0.3, I think).

An URL would be nice. Also, if you make updated packages, could you
please post notice (with URL) here?
(I'm running Debian stable so I hope your packages don't need
testing or newer).
 
M

m a ellis

Tuukka said:
An URL would be nice. Also, if you make updated packages, could you
please post notice (with URL) here?

Sure. I'll have a go at building a new version.
(I'm running Debian stable so I hope your packages don't need
testing or newer).

I found an old version in a directory called 'woody', which I would give you
the apt source line for, but it doesn't seem to work with woody. Hrm.
Screwed that one up somewhere along the line.

I'll let you know how I get on.

Martin
 
F

Felix Bertram

The problem seems to be that GHDL (0.7, at least )can't be compiled with the
gnat packages distributed with gcc (3.3) - it seems to be necessary to use
the one from ftp://cs.nyu.edu/pub/gnat (which is based on gcc 2.8.1).


I am using the following build system here:


gcc -v
Reading specs from /usr/libexec/gcc/darwin/ppc/3.1/specs
Thread model: posix
Apple Computer, Inc. GCC version 1252, based on gcc version 3.1 20021003
(prerelease)

gnatmake -v
GNATMAKE 5.00w (20010924) Copyright 1995-2001 Free Software Foundation,
Inc.
Usage: gnatmake opts name {[-cargs opts] [-bargs opts] [-largs opts]
[-margs opts]}


Of course, I am building GHDL with gcc3.3 sources.



Best regards, Felix
 
J

Jerahmie

Felix Bertram said:
The problem seems to be that GHDL (0.7, at least )can't be compiled with the
gnat packages distributed with gcc (3.3) - it seems to be necessary to use
the one from ftp://cs.nyu.edu/pub/gnat (which is based on gcc 2.8.1).


I am using the following build system here:


gcc -v
Reading specs from /usr/libexec/gcc/darwin/ppc/3.1/specs
Thread model: posix
Apple Computer, Inc. GCC version 1252, based on gcc version 3.1 20021003
(prerelease)

gnatmake -v
GNATMAKE 5.00w (20010924) Copyright 1995-2001 Free Software Foundation,
Inc.
Usage: gnatmake opts name {[-cargs opts] [-bargs opts] [-largs opts]
[-margs opts]}


Of course, I am building GHDL with gcc3.3 sources.



Best regards, Felix

Would it be possible to get a more detailed description of how you
built ghdl for OS X? I've been having some difficulties, and the ghdl
installation instructions aren't very complete yet. I'm using the
same version of gcc,GNAT,& ghdl as you described.

thanks,
Jerahmie
 
F

Felix Bertram

Would it be possible to get a more detailed description of how you
built ghdl for OS X? I've been having some difficulties, and the ghdl
installation instructions aren't very complete yet. I'm using the
same version of gcc,GNAT,& ghdl as you described.

sure, this is quite easy. I attached the script I am using to build GHDL
below. Please note the following:

* use the v0.7 version (which is currently the latest)

* configure currently does not work properly. You will need to manually
adjust the vhdl/Makefile.in in order to replace the Linux/x86 code by a
pthread-based implementation for MacOSX:
GRT_LINUX_OBJS=i386.o linux.o
GRT_PTHREAD_OBJS=pthread.o
GRT_ADD_OBJS= $(GRT_PTHREAD_OBJS) grt-cbinding.o grt-cvpi.o

* I am building a patched version of GHDL, that includes a VPI interface
to integrate with IVI. To do so, I need dlcompat (from Fink) linked into
the GHDL runtime. I am patching grt.lst to do this. These changes will
not show up in GHDL before version 0.8

I assume that you are mainly interested in testing GHDL a little bit
before putting further effort into this. I have put a binary
distribution on my website:
http://homepage.mac.com/f.bertram
Go to the Files section, browse to the IVIonOSX folder and get the most
recent dmg-image. This includes an installer that installs IVI complete
with GHDL and Icarus into /Simulator (so that you may easily remove the
tools later). The tools may be installed individually, if you need to
save disk space. Please note that you will also need Tcl/Tk for Aqua
found here, when planning to use IVI:
http://www.maths.mq.edu.au/~steffen/tcltk/TclTkAqua/

Please be advised that this binary distribution is not finished yet, as
we are still working on the GHDL/IVI integration. I hope that you are
nontheless able to get a feeling for it. I am planning to have all this
polished in the next few weeks. If you have any further questions,
please do not hesitate to contact me directly.



Best regards

Felix
email: f-dot-bertram-at-mac-dot-com



#!/bin/sh
#------------------------------------------------------------------------
# Project: GHDL - VHDL simulator
# File: build.command
# Description: Script to build GHDL on Mac OS X
#------------------------------------------------------------------------
root=`dirname $0`
cd ${root}

gcc=gcc-3.3
srcdir=${root}/${gcc}
ghdldir=${root}/ghdl-0.7
objdir=${root}/build
pfx=/Simulator/GHDL
fink=/sw

echo "----------------------------------------"
echo "merge GHDL into GCC"
echo "----------------------------------------"

cp -rf ${ghdldir}/vhdl ${srcdir}/gcc

echo "----------------------------------------"
echo "setup"
echo "----------------------------------------"

CC="cc -no-cpp-precomp"
export CC

mkdir ${objdir}
cd ${objdir}

mkdir ${pfx}/include
mkdir ${pfx}/lib
cp ${fink}/include/dlfcn.h ${pfx}/include/dlfcn.h
cp ${fink}/lib/libdl.0.dylib ${pfx}/lib/libdl.dylib

echo "----------------------------------------"
echo "configure"
echo "----------------------------------------"

${srcdir}/configure \
--enable-languages=vhdl \
--prefix=${pfx} || exit 1

echo "----------------------------------------"
echo "make"
echo "----------------------------------------"

make || exit 1

echo "----------------------------------------"
echo "install"
echo "----------------------------------------"

make install || exit 1

# --------------------------------------------
# fix GHDL build problems
# --------------------------------------------

echo "@/libgrt.a" >
${pfx}/lib/gcc-lib/powerpc-apple-darwin6.6/3.3/vhdl/lib/grt.lst
echo "@/system.o" >>
${pfx}/lib/gcc-lib/powerpc-apple-darwin6.6/3.3/vhdl/lib/grt.lst
echo "${pfx}/lib/libdl.dylib" >>
${pfx}/lib/gcc-lib/powerpc-apple-darwin6.6/3.3/vhdl/lib/grt.lst
cp /usr/lib/ada/system.o
${pfx}/lib/gcc-lib/powerpc-apple-darwin6.6/3.3/vhdl/lib

# --------------------------------------------
# copy additional files
# --------------------------------------------

echo `${pfx}/bin/ghdl --version` | \
sed -e 's/GHDL //' | \
sed -e 's/ \[.*//' > ${pfx}/VERSION.txt

cp -f ${srcdir}/COPYING ${pfx}
cp -f ${srcdir}/COPYING.lib ${pfx}
cp -f ${srcdir}/MAINTAINERS ${pfx}
cp -f ${srcdir}/README ${pfx}
cp -f ${srcdir}/FAQ ${pfx}
cp -f ${srcdir}/BUGS ${pfx}
cp -f ${srcdir}/GNATS ${pfx}

#------------------------------------------------------------------------
# end of file
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top