This FAQ is free software; you can redistribute it and/or modify it under
the terms of the http://www.gnu.org/licenses/gpl.html
(GNU General Public License) as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
This FAQ is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the GNU General Public License for more details.
OpenCores is a community that enable engineers to develop open source
hardware, with a similar ethos to the free software movement. Currently
the emphasis is on digital modules called 'cores' or 'IP Cores'.
All activities is centered around the OpenCores web site
http://www.OpenCores.org
There is no formal affiliation between the people contribute to OpenCores.
They are a bunch of people who just happen to be walking in the same
direction along a road. This is a dynamic group, people regularly join
and leave. As a whole, the group progresses through the independent
contributions of individuals.
This FAQ covers all aspects of OpenCores. Use it as the
starting point for any FAQ you have. If an aspect of
OpenCores maintains their own FAQ, this FAQ will make
the appropriate referral.
A strong reason to release a core as open source is to get help with the
verification. And since the verification is a major part within a
development project today (~80-90%), this provides a win-win partnership
between the original designer and the end-users.
The open source methodology is the only way we can drive the technology
to the next level in a cost efficient way, since we share the huge
verification effort with the whole open source community.
All kinds of people: Students, HW Professionals, SW Professionals,
Companies, Hobby engineers, Universities, etc. We need all kinds of
people contributing with all kinds of different skills.
OpenCores was founded in October 1999, by Damjan Lampret, as an
open source community for development and distribution of
VHDL/Verilog IP cores (building blocks of Semiconductor chips).
OpenCores soon became world wide known by ASIC and FPGA engineers.
In general, no. If you start exploiting opencores to get a
school project done, others will rapidly tire of your questions
and ignore you. Having said this, many people contribute to
opencores in order to teach and learn. You can learn a lot
from opencores. This knowledge will make you a better designer
and indirectly help with any student projects you may have to do.
Valid ways to learn include contributing to an opencores project,
or running your own opencores project. Any questions directly
related to a school project should be directed towards your
supervisor at school.
There is no preferred language and each designer uses their
language of choice. Keep in mind that a core written in a
seldom used language will not be very useful. Most designers
use VHDL, Verilog, SystemVerilog.
The preferred bus is WISHBONE. This is the only commonly used
SoC bus which is truly free. Rudolf Usselmann has analysed the
advantages of the common SoC busses. His report is available
at the "Wishbone"-page.
To simplify life for users, developers are strongly encouraged to
use an unmodified LGPL (Lesser GPL) license or the modified-BSD license.
The modified-BSD license is the original BSD license with the
'advertising clause' removed.
A modified-BSD style license essentially states that no warranty is given,
the core may be distributed in source or binary form and the authors
copyright must be acknowledged.
http://en.wikipedia.org/wiki/Modified_BSD_licence
The GNU Lesser General Public License (formerly the GNU Library General
Public License) or LGPL is a free software license published by the
Free Software Foundation (FSF). It was designed as a compromise between
the strong-copyleft GNU General Public License or GPL and permissive
licenses such as the BSD licenses and the MIT License. The GNU Lesser
General Public License was written in 1991 (and updated in 1999, and
again in 2007) by Richard Stallman, with legal advice from Eben Moglen.
There are two main ways to download the code for a project:
1. Via the website:
The latest version of the source-code for each project can be
downloaded via the “Project-list” by selecting the “download”-button.
2. Via SVN client:
Using a SVN client enables full access to the source-code and all
its history. Instructions how to download (checkout) and
upload (checkin) are available here the “SVN HowTo”-link at
the first page.
Start by reading the FAQ in full. In this way, you will not
clutter the mailing lists with repetitive questions.
Next, subscribe to the 'cores' mailing list. This is the main
mailing list for opencores. Listen in for a few weeks to get
a feel for the conversation. Once you are comfortable, feel
free to contribute the the discussion in an intelligent
manner. Asking a FAQ is not considered intelligent. All
mailing list messages must be in PLAIN TEXT (no html)
WITHOUT ATTACHMENTS. If you want to include an attachment,
put the file on a server and place a URL in your mail message.
If any of this does not make sense, do some more reading on
the Internet until it does make sense. The Google search
engine (http://www.google.com) is a good stating point for
background reading. Type in the subject that you want to
read about.
There are lots of ways to contribute, without running your
own project. This includes helping with an existing project,
helping with the web site, testing existing cores, or whatever
you find interesting. Documentation and testing are especially
appreciated. If this sounds interesting, please send an email
to oc-team@opencores.org
A project is basically a unit of work. Each project has a maintainer.
The maintainer is a person who has volunteered to oversee the development
of something. Typically each project corresponds to a single core.
Each project has its own web page. To see the page for a project, click on
the "Projects"-link under the "Browse"-menu on the left side of page. You
will be presented with a list of projects. Click on the name of a
project to see its pages.
Start by getting an account on OpenCores (as described above).
Before requesting a new project, check if there are any other projects
similar to the one you want to start. If there is, consider joining that
project before starting a new one.
To start a new project, select the "create project"-link under "My account"-page.
Please do not set up a project simply to point to files outside
the OpenCores server. All files must be located on the OpenCores server.
Send mail to the "cores"-forum", describing the project and
asking for help. Someone may be interested enough to help.
The source for any work developed will have to be released
to the rest of OpenCores under a free or open license. If
you are not prepared to release your work, don't expect
much support from the rest of OpenCores.
Developers working on someone else's project should protect
themselves by claiming copyright on work they do and insisting
that all files be published as they are written.
First, you need to be logged int to OpenCores. Then you
go to the page you want to edit and if you have write access
the "EDIT"-image/link will appear on the page or
block. By clicking on that image, this section will be edited.
Files are always related to specific projects. To be able to edit a
project you must be it's maintainer and be logged in to OpenCores.
Instructions on how to upload and download file are available
under "SVN How To"-page on the first page.
You must be logged in on OpenCores and you need to be maintainer of
the project. Go to the project-page and you will find "Edit"-link
for different sections.
- Project you put online is not stolen work and you have all the copy rights
- Code does not contain any intentional bugs but might have limitations and list of limitations is available
- Project available on third party web site can be published but only in its entirety and not just as URL link
- Project is complete and not just a snapshot what is available on third party web site
- Commercial advertising is not allowed without written approval from OpenCores
- Project has valuable information
- Project that doesn't contain enough "value" for the opencores community will be deleted (ex. Project that is commercial advertising of a third party product, OpenCores is not a a search/index site)
- OPENCORES.ORG reserves rights to refuse, modify or delete project if the previous terms are not fulfilled
- News available on third party web site can be published but only in its entirety and not just as URL link
- News is complete and not just a snapshot what is available on third party web site
- News has valuable information
- News that doesn't contain enough "value" for the opencores community will not be published (ex. News that is commercial advertising of a third party product, OpenCores is not a a search/index site)
- OpenCores related News can't contain third party web site URLs
- Article available on third party web site can be published but only in its entirety and not just as URL link
- Article is complete and not just a snapshot what is available on third party web site
- Article has valuable information
- Article that doesn't contain enough "value" for the opencores community will not be published (ex. - Article that is commercial advertising of a third party product, OpenCores is not a a search/index site)