Thank you for visiting the Open Circuit Design website. This website is the repository for the suite of open-source EDA (Electronic Design Automation) tools including Magic, IRSIM, Netgen, PCB, and XCircuit. These tools are all provided for free under the GNU Public License (GPL) or similar open-source license.
Open Circuit Design is committed to keeping open-source EDA tools useful and competitive with commercial tools.
Click on the buttons in the menu on the left to get to the home page of each of the major electronic design automation (EDA) tools hosted by Open Circuit Design:
- Magic, the VLSI layout editor, extraction, and DRC tool.
- XCircuit, the circuit drawing and schematic capture tool.
- IRSIM, the switch-level digital circuit simulator.
- Netgen, the circuit netlist comparison (LVS) and netlist conversion tool.
- Qrouter, the over-the-cell (sea-of-gates) detail router.
- Qflow, a complete digital synthesis design flow using open-source software and open-source standard cell libraries.
- PCB, the printed circuit board layout editor.
efabless.com hosts Open Circuit Design software! efabless is the company where I work, and is bringing community collaboration to the process of circuit design.
Part of the efabless platform is to host challenges and award prizes for winning circuit designs, as well as provide a marketplace for creating, buying, and selling integrated circuit intellectual property.
efabless launched their first challenge on November 29, 2016. This challenge is now closed for new entrants, but more challenges will be forthcoming. Go to the company website for more information.
The initial challenge is now in the second stage, incorporating Magic for layout and extraction, and Netgen for LVS. Qflow and qrouter will be featured later. Magic and Netgen will be enabled on the platform at the beginning of Februrary 2017.
See my interview on EEWeb for a pretty concise summary of what Open Circuit Design and EDA tool open source development mean to me.
The OpenCircuitDesign domain is owned by me (Tim Edwards) and registered through DynDNS.org. Initially, I ran it off of a computer in my basement in Maryland and tracked the Comcast dynamic IP address using the DynDNS service. After that, for some years the OpenCircuitDesign computer sat in the network closet at MultiGiG in Scotts Valley, California, where it had a fixed IP address. Since 2012, it is back in my basement in Maryland. The OpenCircuitDesign host computer is a Fedora Core system. The underlying network service is now Verizon FiOS.
OpenCircuitDesign.com runs a Wiki service using UseMod software, mailing lists using MailMan, a bug tracking database using Bugzilla, and spam filtering using SpamAssassin. It runs an IMAP mail server for inbound mail. Outbound mail is handled via Verizon, my service provider. HTDig is installed as the search engine for the site, which is also integrated into MailMan for searching the mailing list archive.
As of May 2011, all of the primary software projects are placed under git, the software versioning system created for Linux development. This is a slight update from the previous system, dating from April 2006, in which all projects were placed under CVS (concurrent versions system). Since I normally prefer tarballing distributions regularly, I have instituted a complicated system of scripts on OpenCircuitDesign. I have a copy of all the source distributions on OpenCircuitDesign in git repositories. At the end of the day (during the night), cron launches a script that checks each project, and does the following:
As part of all this activity, the script is careful to keep separate the "stable" and "development" distributions where I have both (e.g., Magic and XCircuit).
- Determines if any commits have been made during the day. If not, no further action is taken. Otherwise:
- Updates the revision number of the project
- Creates a new tarball
- Updates the download web page to point to the new tarball
- Compiles all of the commit messages since the last tarball was made
- Appends the messages to the history ("changes") web page.
A separate cron script runs roughly once a week, checking the "last modified" date on each file in the website and updating the "Last Updated" message at the bottom of each web page if it is different, so I don't have to.