OpenCores

Frequently Asked Questions

About this FAQ

What is OpenCores.org?

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.

What is the purpose of this FAQ?

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.

My question is not covered in the FAQ, what do I do?

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 (oc-team@opencores.org). You can also post your question on the forum; please use the "others"-forum for generic questions.

Who is responsible for this FAQ?

Andrea Borga on behalf of Oliscience and the OpenCores community. Send an mail to oc-team@opencores.org to contact the author about this document.

Below are some of the previous contributors:

  • "Copyright 2007-2017 Marcus Erlandsson, licensed under the GNU GPL v2 or later"
  • "Copyright 2002-2003 John Dalton, licensed under the GNU GPL v2 or later"
  • "Copyright 1999-2007 Damjan Lampret, licensed under the GNU GPL v2 or later"

FAQ License

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.

Basics

Why do people contribute to OpenCores?

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:

  • effort duplication avoidance
  • no vendor lock-in
  • peer review
  • broad verification
  • capillary dissemination

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.

Who contributes to OpenCores?

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.

Where is OpenCores situated?

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.

History of OpenCores

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.

Can you help me with my school/college/university project?

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.

What language is spoken throughout the site?

The official language for the opencores forums/mailing-lists and web site is English. A subset of pages are translated to Chinese.

Is advertising or SPAM allowed on the forum/mailing-lists?

No. OpenCores reserves the right to charge for advertising or SPAM posted anywhere on the site.

Design Guidelines

What design language do you use?

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.

What is the preferred System-On-A-Chip (SoC) bus for OpenCores?

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.

Does OpenCores have any coding and interface guidelines?

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.

Downloading Files

Where can I see all projects/cores?

Select the “Projects”-link on the first page. Here is a list of all the available projects at OpenCores.

How do I get the source for a core?

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 oc-team@opencores.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.

Joining and contributing to OpenCores

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 oc-team@opencores.org or the project maintainers directly.

What is a project, what is a core?

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.

How do I help out on an existing project?

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 (oc-team@opencores.org).

How do I start my own project?

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.

I don't want to maintain a project any more. What do I do?

If you decide to stop working on a project, please send mail to oc-team@opencores.org. We will then announce the project as unmaintained and ask if anyone within the community want to "take over" the maintainership.

The original maintainers are not contactable, can I become a co-maintainer and continue to develop and maintain the project?

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 oc-team@opencores.org

I have written a core. Can I publish it on the OpenCores web site?

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.

I have an idea for a core but need help to develop it, can someone help?

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 oc-team@opencores.org 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.

Information for Developers

How do I edit a page on the OpenCores web server?

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.

How do I upload files to the OpenCores server?

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.

How do I edit my personal page on the opencores web server?

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 oc-team@opencores.org

It is also here you control what subscriptions you want to subscribe or un-subscribe to (forum, mailing-lists, newsletter).

How do I change my password?

Login on OpenCores, as described in previous section. Select the "My account"-link.

How do I edit a project page on the OpenCores web server?

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.

How do I write specification for my core?

We have specification template that you can use.

Template is available here (specification_template.dot) (MS Word Template - 450kB)

How do I get an email address of the form your-user-name@opencores.org?

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 your-user-name@opencores.org emails will get forwarded to the email address that was used during the registration.

To create project

Before you publish your project, you must agree and accept the following T&C's:

  • Project you put online is not stolen work and you have all the copy rights.
  • Project is not intentional violating patents.
  • 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

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).

To add news

  • 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

To add article

  • 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)
© copyright 1999-2017 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.