Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


A simple IDE that uses myHDL, yosys, and arachne-pnr to target the ICEStick.

Written in python with glade using pygi. Looks a lot like gedit because it uses the same gtk components.



The goal for synthia is to provide a simple path for playing with reconfigurable logic.

Arduino wasn't sucessful because it was a cheap dev board or a powerful IDE. It was succesful because it was so easy to use. Like ten lines of code and hit the play button and you are blinking an LED. Rather than using the vendor's complicated but powerful IDE and standalone C, you were looking at a text box with a simplified language, and a play button.

FPGA vendor software stacks are impractically large and inflexible for this type of application.

Project icestorm reverse engineered the bitstream format for a Lattice FPGA. This allowed for a small open source software stack to go from verilog to bitstream.

Another usability barrier is that mainstream HDL's (VHDL and Verilog) are not very conducive to writing synthesizable code without understanding how that code will be implemented on hardware.

myHDL is an alternative HDL based on python that is much more readable. Python has a reputation for readability and is widely used in the SW world, so it's syntax is both friendly and familiar.

Installing Dependencies

On a fresh Lubuntu 15.10.

# apt-get some packages :)
sudo apt-get install git python-pip clang libftdi-dev gawk tcl-dev libreadline-dev bison flex mercurial gir1.2-gtksource-3.0

# install icestorm
cd $HOME
git clone icestorm
cd icestorm && make && sudo make install
# arachne-pnr
cd $HOME
git clone arachne-pnr
cd arachne-pnr && make && sudo make install

# install yosys
cd $HOME
git clone yosys
cd yosys && make && sudo make install

Development State

Basic operation works, but there are still a few pieces that are missing.


  • Status bar displays current state of synthesis and download
  • Displays reasonable looking errors during the toVerilog pass


  • Sort out the dependencies
    • Install this in a virtualenv and see what python packages are missing
    • Write a
  • Write setup instructions
  • Remove, or add functionality for buttons that currently don't do anything
  • Add reasonable way in the UI to detect whether iCEStick is present
  • Add the other pins on the iCEstick to the pcf and pin class


an IDE that uses myHDL, yosys, and arachne-pnr to target the ICEStick







No releases published


No packages published