OpenCores is a community that enables engineers to develop Open Source gatware, with a similar ethos to the free software movement. Currently the emphasis is on digital modules called 'cores' or 'IP Cores'. All activities are centred around the OpenCores website, which you are currently browsing.
There is no formal affiliation between the people who contribute to OpenCores. They are a group 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. The group today consists of both private individuals, amateurs, enthusiasts, professionals in the field, affiliated researchers, as well as representatives of commercial entities.
This FAQ tries to cover all aspects of OpenCores. Use it as the starting point for any FAQ you have. If any specific aspect of OpenCores in further detailed in its own page, this FAQ will provide the appropriate reference to it.
We do our best to clearly advise on all that is related to the site and its community. If however your question is not covered in the FAQ, email us your question (firstname.lastname@example.org). You can also post your question on the forum; please use the "others"-forum for generic questions.
Andrea Borga on behalf of Oliscience and the OpenCores community. Send an mail to email@example.com to contact the author about this document.
Below are some of the previous contributors:
This FAQ is free software; you can redistribute it and/or modify it under the terms of the 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.
A strong reason to release an IP core, i.e. a bundle of files forming a gateware project, is to get help with the verification. And since the verification is a major part of a projects’ development cycle 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.
There are other advantages to sharing own code and benefit from others’ work:
Last but not least: sharing is fun!
It is a proven fact that enjoying oneself while doing something – yes, work included – leads to better results. It is also widely demonstrated that working in collaboration with other people improves the quality of the final product.
All kinds of people: Digital Design Engineers, Researchers, Students, HW Professionals, SW Professionals, Companies, Hobby Engineers, Research Institutions, Universities, etc. In order to make the community thrive we need all kinds of people contributing with all kinds of different skills.
The main server is physically located in Amsterdam, The Netherlands, Europe.
It is hosted on TransIP virtual servers.
The whole OpenCores content is entirely and solely stored there.
OpenCores was founded in October 1999, by Damjan Lampret, as an Open Source community for development and distribution of gateware (VHDL/Verilog) IP Cores. At the time it mostly centred around the OpenRISC ISA (Instruction Set Architecture) Core, but it clearly saw from the very beginning the potential to grow as a reference site for much more. OpenCores soon became known world-wide by ASIC and FPGA engineers. A strong community started to grow around the portal, and soon many different projects, ranging the whole spectrum of the Digital Design engineering domain, started to appear maintained by a rich pool of contributors from all-over the world. In 2007, ORSoC, lead by Marcus Erlandsson, acquired the ownership of the trademark, the portal, and its community. Since then ORSoC committed to the idea of the project, advancing the development of the OpenRISC architecture, and more broadly the OpenCores projects pool and community awareness. Several major improvements where added by ORSoC to the website, and its operation looked after for many years. In 2017, due to a lack of time and resources, ORSoC decided to hand over the ownership and the development and maintenance duties to Oliscience. A new era began.
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.
The official language for the OpenCores forums/mailing-lists and web site is English. A subset of pages are translated to Chinese.
No. OpenCores reserves the right to charge for advertising or SPAM posted anywhere on the site.
There is no preferred language and each designer uses her/his 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. The Wishbone specification is historically maintained jointly between Michael Unnebäck and Richard Herveille.
The OpenCores RTL coding guidelines are available here.
We strongly recommend to make good use of it!
By adopting a common coding style or try to be as close as possible to its recommendations, the contributor can ensure quick pick-up (and prompt help) from the community.
Select the “Projects”-link on the first page. Here is a list of all the available projects at OpenCores.
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.
please note: the archives are compressed on the fly upon a click on the button; depending on the size of the repository it might take up to a few minutes before the download even starts! Please be patient. In case of problems with downloading cores please contact firstname.lastname@example.org
2. Via SVN client: Using an 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.
There are lots of ways to contribute to the community, without necessarily running your own project. This includes helping with an existing project, both with development and with verification, as well as with documentation and testing; which are especially appreciated in this area. Contributing to posting and answering questions on the forums is also very beneficial. At last, helping us improving the website, with feedback and suggestions, is appreciated and highly encouraged. If all this sounds interesting to you, please send an email to email@example.com or the project maintainers directly.
A project is basically a "unit of work". It can be everything from a smaller function (e.g. an adder) all the way up to complex function (e.g. a processor). Each project has one or more maintainers. The maintainer/s are individuals who has volunteered to oversee the development and to make sure that the project gets updated with feedback from the community. Typically each project corresponds to a single IP gateware core.
Each project has its own web page, SVN-repository, statistic-information and bugtracker. To browse the page for a project, click on the "Projects"-link on the "Browse"-menu on the left-side page. You will be presented with a list of projects. Click on the name of a project to see its pages.
Send a polite email to the maintainer of that project, asking how you can help. The maintainer will be listed on the web page for that project. If you will not get any response from the maintainer, send us an email and and we will help you (firstname.lastname@example.org).
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. It better to have one really good project, then having ten similar projects. Working together will improve efficiency and quality.
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 les outside the OpenCores server. We have had so much problems in the past when these external links disappears after a while. If all les are located at in OpenCores SVN repositories then we can avoid this problem. All les must be located on the OpenCores server.
If you decide to stop working on a project, please send mail to email@example.com. We will then announce the project as unmaintained and ask if anyone within the community want to "take over" the maintainership.
Yes, we will then try a final time to contact the original maintainers and if they don't answer within 1-2 weeks, then we can add you as a co-maintainer. To request this, send an email to firstname.lastname@example.org
Yes absolutely, this is the main function of OpenCores. Start reading this section at the beginning. Read the "How do I start my own project" section in this FAQ.
Post a message to the "others"-forum", describing the project and asking for help. Someone may be interested enough to participate in your project, you can also send an email to email@example.com for more information. It is much better to be a team of maintainers in a project; surely from a technical standpoint, but also because it is more fun to have "partners" to discuss with during development. The source for any work developed will have to be released to the rest of OpenCores under a free or open license.
First, you need to be logged 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.
Files are always related to specific projects. To be able to edit a project you must be it's maintainer and be logged to OpenCores. Instructions on how to upload and download file are available under "SVN How To"-page under "HowTo/FAQ"-page on the first page (left column). Please note that the delete function is not available on all pages, reason being to prevent the proliferation of broken links, and if a new file replaces an old, the oc-team advises to use a revision number in the naming schema.
Login on OpenCores, as described in previous section. Select the "My account"-link. Here you can update some of your personal information. If you want to information that are not "editable", send this request in an email to firstname.lastname@example.org
It is also here you control what subscriptions you want to subscribe or un-subscribe to (forum, mailing-lists, newsletter).
Login on OpenCores, as described in previous section. Select the "My account"-link.
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.
We have specification template that you can use.
Template is available href (specification_template.dot) (MS Word Template - 450kB)
Every account holder gets an email alias. You need to register at OpenCores to get an account. This is only a forward-service, meaning that all email@example.com emails will get forwarded to the email address that was used during the registration.
Before you publish your project, you must agree and accept the following T&C's:
To create a project you need to apply for a project, this is done under the "My account"-page. It's located on the top-right corner under "Shortcuts" (Create project).