Revision as of 04:06, 30 June 2016 by Olimex (talk | contribs) (Add iceprogduino to IceStorm)



Product Selection Guilde

iCE40 Family Handbook

iCE40 datasheet


GitHub repository with the hardware files

iCE40HX1K-EVB programming connector


iCE40HX1K-EVB 34-pin bus connector



Get started under Linux

To develop with iCE40HX1K-EVB you need:

   OLIMEXINO-32U4 as programmer (or any other Arduino compatible board)
   IDC10-15cm cable to connect iCE40HX1K-EVB with OLIMEXINO-32U4
   SY0605E 5V power supply adapter
   USB-MINI cable
   optional but recommended USB-ISO

Installing Icestorm FOSS tools for iCE40

First we need to install the tools necessary to build Icestorm:

   sudo apt-get install build-essential clang bison flex libreadline-dev \
                    gawk tcl-dev libffi-dev git mercurial graphviz   \
                    xdot pkg-config python python3 libftdi-dev

Installing the IceStorm Tools (icepack, icebox, iceprog, icetime, chip databases):

   git clone icestorm
   cd icestorm
   make -j$(nproc)
   sudo make install

Installing Arachne-PNR (the place&route tool):

   git clone arachne-pnr
   cd arachne-pnr
   make -j$(nproc)
   sudo make install

Installing Yosys (Verilog synthesis):

   git clone yosys
   cd yosys
   make -j$(nproc)
   sudo make install

The Arachne-PNR build converts the IceStorm text chip databases into the arachne-pnr binary chip databases. Always rebuild Arachne-PNR after updating your IceStorm installation.

Notes for Archlinux: just install icestorm-git, arachne-pnr-git and yosys-git from the Arch User Repository (no need to follow the install instructions above).

Preparing OLIMEXINO-32U4 as programmer

Download latest Arduino IDE we recommend you to use the one from current revision is 1.6.9.

Copy iceprog.ino sketch from GitHub/iCE40HX1K-EVB/programmer/olimexino-32u4 firmware to examples folder.

Plug the USB cable to OLIMEXINO-32U4 and start the Arduino IDE

   cd arduino-1.6.9
   sudo ./arduino

From Tools select 'Arduino Leonardo' as board.

From same menu select the PORT where the board is attached it will be something like: '/dev/ttyACM0 (Arduino Leonardo)' or '/dev/ttyUSB0 (Arduino Leonardo)'

Open the iceprog.ino sketch

From menu Sketch-Include library-Manage libraries check if you have SPI and SPIFlash libraries installed if not install them.

Compile and Upload the sketch.

If everything complete without error now you have OLIMEXINO-32U4 set as iCE40HX1K-EVB programmer!

Add iceprogduino to IceStorm

Copy iceprogduino folder from GitHub programmer to icestorm and build it

   cd icestorm/iceprogduino
   make clean
   sudo cp iceprogduino /usr/local/bin

Make LED blink with IceStorm

Copy from GitHub ice40hx1k-evb to icestorm/examples then

   cd icestorm/examples/ice40hx1k-evb
   sudo ../../iceprogduino/iceprogduino example.bin

LED1 and LED2 should start blink which means the code is successfully loaded

Get started under Windows


Under construction


Under construction