Both RedHat and SUSE have long enterprise Linux tradition and managed to get those packages produced and tested for them. As time passes, there will be more examples of packages that have been tested to work on Ubuntu. In fact, many such packages since last year come as tested to work with Ubuntu. As Canonical makes agreements with more vendors, there will be more Ubuntu-certified packages.
For your first question: If you want to make a program that runs on all distributions, create a static (compared to dynamic) executable. A
statically-linked executable does not depend on the system libraries, therefore can work between distributions, as long as the architecture (such as Intel/AMD) is the same.
Here is a program,
Let's compile as normal,
$ gcc helloworld.c -o helloworld
$ ldd helloworld
libc.so.6 => /lib/libc.so.6 (0x00007f3cc3481000)
$ gcc helloworld.c -static -o helloworld_static
$ ldd helloworld_static
not a dynamic executable
So, what can you do with that VHDL program? Get the .rpm file and convert it to .deb using alien. Then, install. If it worked, you are ok. If it does not work, use
ldd to figure out which library file is missing. On the worst case scenario, create a virtual machine for those other Linux distributions and run the program there.