Skip to content

Adding new boards

Juan Gonzalez-Gomez edited this page May 2, 2022 · 2 revisions

Apio support

If you want to add a new boards to Icestudio, first you should support it in Apio. Apio is in charge of running the necessary tools for generating the bitstream for the FPGA, from the verilog sources

Once the board is supported by Apio, proceed to add it to Icestudio. It is just a graphical user interfaces that calls apio when the user needs to build, verify or upload its circuits

Icestudio Configuration files

Once the board is supported in Apio, adding it to Icestudio is rather easy

The Boards are described by three JSON files, located in the folder resources/boards/boardname

  • pinout.json: Pin numbers, names and type (input, output, inout)
  • info.json: Board information: resources, board name, interface...
  • rules.json: Automatic connection of unused pins

In addition there are two more OPTIONAL files:

  • pinout.pcf: Board constraints. This is just for documentation purposes (the actual constraint file is automatically generated on the fly when the circuit is being sinthesized
  • pinout.svg: Drawing of all the pins

Just create a folder inside resources/boards/ with the name of the board, and insert the configuration files there

Icestudio Menu

Edit the resources/boards/menu.json and add the new board

Getting started

Collections

  • Default: Icestudio Default Collection

Stable

Development

  • IceBoards: blocks and examples for the diferent FPGA boards
  • IceComp: Comparators
  • IceArith: Integer arithmetics
  • IceCounter: Counters
  • IceSignals: 1-bit signal managment
  • IcePLL: PLLs
  • IceLEDOscope: Measuring signals
  • IceLEDs: Displaying on LEDs
  • IceHearts: Timming signal generation
  • IceInputs: 1-bit inputs
  • IceRok: Block probes for Icestudio => Sigrok integration (with Pulseview GUI)
  • IceMachines: Working with Machines (simple state machines with a standar interface)
  • IceSerial: Serial Asynchronous communications
  • IceMem: Working with Memories
  • IceMeasure: Measuring cycles and time in your circuits, very easily
  • IceStack: Working with stacks
  • IceFlash: Read from spi serial flash memories
  • IceBus: Accesing and sharing simple buses
  • IceLCD: Components and controllers for LCDs
  • IceUnary: Working with unary numbers
  • IceCrystal: Drive displays from Open Source FPGAs
  • ice-chips-verilog: IceChips is a library of all common discrete logic devices in Verilog
  • ArithmeticBlocks: FPGA signed and unsigned integer operations, 16, 24 and 32 bits, + - * / sqrt min max compare etc.
  • iceSynth: Audio synthesis
  • icebreaker: Blocks and examples for the icebreaker OpenFPGA board
  • Jedi: blocks of the FPGA Jedi hardware Academy
  • LOVE-FPGA: Hardware elements and examples for the LOVE-FPGA project (Linking Of Virtual Electronics to FPGAs)
  • Stdio: Standard Input-Output in different devices
  • CT11: Ejemplos del cuaderno ténico 11: Señales del sistema y Medición con el LEDOscopio
  • Generic: Icestudio Generic Collection
  • Logic: Icestudio Logic Collection
  • IceInterface: Serial, SPI, I2C... (TODO)

Testbenches

Developers

Contribute

HELP

Release history

Clone this wiki locally