Skip to content
ewa edited this page Sep 17, 2011 · 4 revisions

Rights

What rights should a Free HDL license confer?

Differences from Software

I see three main (related) reasons why this might be different from normal Free Software:

  1. For a most software, the intended "consumer" of the code is the end user. I suspect this is almost never true of HDL "cores." Rather, most of these are meant to be used by other designers.

  2. Installing, removing, and modifying software is generally easy unless someone is actively trying to prevent it. This is not at all true of HDL designs: If the design is used to make an ASIC which is surface-mount soldered onto a circuit board, that's not modifiable for most practical purposes. FGPAs are re-programmable, but it's a serious undertaking.

  3. Computers can (and generally do) run a variety of programs with different license terms. These programs are sufficiently separate that there's a clear conceptual difference between having two programs on the same computer and making a new program incorporating them. It's not clear whether (or how) such a distinction would be made for components running on an FPGA or ASIC.

Implications

  1. The end user's freedom is an important value in the Free Software community. If we consider that important, we may need to place a comparatively higher burden on the designer who wishes to use a free core. Is it OK to fix a free core in an ASIC? If a free core is used in an FPGA design, do we require the hardware in which it is used to support re-programming?

Questions

  1. May this code by included as-is in a proprietary design? (LGPL-like condition)

  2. May this code be used in a derivative work which includes proprietary components? (Think Xilinx Core Generator cores)

  3. May this code be used to synthesize hardware? If the design of the hardware is available under suitable license terms, but it's still impractical for the end-user to change it or make their own, is that free enough?

  4. What about non-functional code (e.g. "verification IP"). In the software realm, testing tools are typically fairly separate from the code under test. A lot of HDL tests work by compiling the test code and code under test into a single simulation executable and then running it. Does a developer incur any obligations by combining her functional code with someone else's free test code (or vice-versa)?

Clone this wiki locally