Skip to content

Commit

Permalink
Merge branch 'FPGAwars:develop' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
benitoss authored Sep 30, 2023
2 parents ee22528 + 963228a commit bfa5d73
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 82 deletions.
115 changes: 36 additions & 79 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,51 +16,57 @@

Open source **ecosystem for open FPGA boards**

Apio (pronounced [ˈa.pjo]) is a **multiplatform toolbox**, with static pre-built packages, project configuration tools and easy command interface to verify, synthesize, simulate and upload your **verilog** designs.
## What is Apio?

Apio is used by [Icestudio](https://github.com/FPGAwars/icestudio).
Apio is a **multiplatform** toolbox with **static** pre-built packages to verify, synthesize, simulate and upload your verilog designs into the supported **FPGA boards**

### Table of contents
* [Installation](#installation)
* [Apio packages](#apio-packages)
* [Supported boards](#supported-boards)
* [Documentation](#documentation)
* [Development](#development)
* [Videos](#videos)
* [Authors](#authors)
* [Contributors](#contributors)
* [License](#license)
## What??????

# Documentation
Apio makes **extremely easy** the process of working with **FPGAs**. Go from **scratch** to having a **blinky LED** in your FPGA board in minutes! This is because it is based only on **Free/Libre Open Source Software** (FLOSS). Just install it and use it as you want

Find all the information on this [WIKI PAGE](https://github.com/FPGAwars/apio/wiki)

# Installation
In this animation you can see the whole process of testing the Blinky led circuit: Just type one command and the circuit will be synthesized, and uploaded into the FPGA

![](https://github.com/FPGAwars/Apio-wiki/raw/main/wiki/Quick-start/apio-alhambra-II-01.gif)

Think of Apio as a small **FPGA distribution**, which **collects** and **packages** **FLOSS toolchains for FPGAs**. You can install packages in **Linux**, **Mac** and **Windows** for synthesizing hardware, verifying and simulating from verilog files

The goal is making it **very easy** to start with FPGAs

As the user **gh02t** said in this post on [Hacker-news](https://news.ycombinator.com/item?id=17912510):
> Apio is a command line tool that automates installing the toolchain for your FPGA and running it. It just simplifies things, you don't have to use it if you'd rather call the individual tools for synthesis, P&R, simulation etc. It'd be reasonable to think of it as akin to a very smart Makefile combined with an automatic package manager, specialized to FPGAs (it's based on PlatformIO). It's nice when you're still kind of getting oriented, because you don't need to know how to set up and invoke the different tools... just call `apio build` or `apio simulate`
## Apio and higher level tools

Apio has a **command line interface** (CLI). It is the **building block** for other **higher level tools**, like [Icestudio](https://icestudio.io/), [Apio-IDE](https://github.com/FPGAwars/apio-ide) or working with FPGAs from IDEs such as [Visual Studio Code](https://code.visualstudio.com/)


### A circuit in Icestdio

![](https://github.com/FPGAwars/Apio-wiki/raw/main/wiki/Introduction/icestudio-example.png)

1. Install [Python](https://www.python.org/downloads) and [pip](https://pip.pypa.io)
### A verilog circuit in Apio-IDE

2. Install the latest apio: ```pip install -U apio```
![](https://github.com/FPGAwars/Apio-wiki/raw/main/wiki/Introduction/apio-ide-example.jpg)

### A verilog circuit in VSCode

![](https://github.com/FPGAwars/Apio-wiki/raw/main/wiki/Introduction/vscode-example.png)

## Documentation

Find all the information on this [WIKI PAGE](https://github.com/FPGAwars/apio/wiki)

## Apio packages

| Package | Installation | Description
|---------|----------------|---------------
| [drivers](https://github.com/FPGAwars/tools-drivers) | apio install drivers | Drivers tools (only for Windows)
| [tools-oss-cad-suite](https://github.com/FPGAwars/tools-oss-cad-suite) | apio install oss-cad-suite| Selected binaries from the [YosysHQ/oss-cad-suite project](https://github.com/YosysHQ/oss-cad-suite-build)
| [examples](https://github.com/FPGAwars/apio-examples) | apio install examples | Verilog basic examples, pinouts, etc
| [gtkwave](https://github.com/FPGAwars/tool-gtkwave) | apio install gtkwave | Simulation viewer. [GTKWave project](http://gtkwave.sourceforge.net) (only for Windows)
| [yosys](https://github.com/FPGAwars/toolchain-yosys) | apio install yosys | FPGA synthesis. [Yosys project](http://www.clifford.at/yosys)
| [ice40](https://github.com/FPGAwars/toolchain-ice40) | apio install ice40 | iCE40 place & route and configuration tools. [Icestorm project](http://www.clifford.at/icestorm)
| [ecp5](https://github.com/FPGAwars/toolchain-ecp5) | apio install ecp5 | ECP5 tools including [Project Trellis](https://github.com/SymbiFlow/prjtrellis) and [nextpnr](https://github.com/YosysHQ/nextpnr)
| [iverilog](https://github.com/FPGAwars/toolchain-iverilog) | apio install iverilog | Verilog simulation and synthesis tool. [Icarus Verilog project](http://iverilog.icarus.com)
| [scons](https://github.com/FPGAwars/tool-scons) | apio install scons | A software construction tool. [Scons project](http://scons.org)
| [verilator](https://github.com/FPGAwars/toolchain-verilator) | apio install verilator | Verilog HDL simulator. [Verilator project](https://www.veripool.org/wiki/verilator)
| [icesprog](https://github.com/FPGAwars/toolchain-icesprog) | apio install icesprog | Programmer for the [iCESugar](https://github.com/wuxx/icesugar)
| [fujprog](https://github.com/FPGAwars/toolchain-fujprog) | apio install fujprog | Programmer for ULX2/3S boards

| [drivers](https://github.com/FPGAwars/tools-drivers) | apio install drivers | Drivers tools (only for Windows)
| [gtkwave](https://github.com/FPGAwars/tool-gtkwave) | apio install gtkwave | Simulation viewer. [GTKWave project](http://gtkwave.sourceforge.net) (only for Windows)

**Supported platforms**

*linux_x86_64, linux_i686, linux_armv7l, linux_aarch64, windows_x86, windows_amd64, darwin*.

## Supported boards

Expand Down Expand Up @@ -145,51 +151,6 @@ Find all the information on this [WIKI PAGE](https://github.com/FPGAwars/apio/wi

NOTE: all supported [Icestorm FPGAs](http://www.clifford.at/icestorm/) can be used with [--fpga or --size, --type and --pack options](http://apiodoc.readthedocs.io/en/develop/source/user_guide/project_commands/cmd_build.html#options).

## Documentation

The complete documentation of the project can be found in Read the Docs: http://apiodoc.readthedocs.io. There is also a list of frequently asked questions (FAQ) that you can check [here](./FAQ.md).

## Development

```bash
git clone https://github.com/FPGAwars/apio.git
cd apio
```

### Testing

```bash
pip install tox
```

```bash
tox
```

```bash
tox -e offline
tox -e coverage
```

### Documentation

```bash
cd docs
make html
firefox _build/html/index.html
```

### Debian packaging

Also you can find the debian scripts to package the full application and all the packages here: https://github.com/set-soft/apio-debian.

Thanks Salvador E. Tropea!

## Videos

[![Apio in RPI2: iCEstick, Icezum and icoBOARD ](http://img.youtube.com/vi/xLb7T4pw9iY/0.jpg)](https://www.youtube.com/watch?v=xLb7T4pw9iY "Apio in RPI2: iCEstick, Icezum and icoBOARD ")

[![Apio: an easy multi-platform toolbox for open FPGAs](http://img.youtube.com/vi/UJ6-_42P5BE/0.jpg)](https://www.youtube.com/watch?v=UJ6-_42P5BE "Apio: an easy multi-platform toolbox for open FPGAs")

## Authors

Expand All @@ -210,8 +171,6 @@ Thanks Salvador E. Tropea!

* [FPGAwars](http://fpgawars.github.io/) community has developed this project in a voluntary and altruistic way since 11/2016.

<img src="https://avatars3.githubusercontent.com/u/18257418?s=100">

* [BQ](https://www.bq.com) sponsored this project from 02/2016 to 11/2016. Thanks.

## License
Expand All @@ -233,8 +192,6 @@ Licensed under [GPL 2.0](http://opensource.org/licenses/GPL-2.0) and [Creative C
[license-image]: http://img.shields.io/:license-gpl-blue.svg
[license-url]: (http://opensource.org/licenses/GPL-2.0)

https://github.com/FPGAwars/Apio-wiki/raw/main/wiki/Logos/Apio-github.png

[apio-logo]: https://github.com/FPGAwars/Apio-wiki/raw/main/wiki/Logos/Apio-github.png
[linux-logo]: https://github.com/FPGAwars/apio/raw/master/docs/resources/images/linux.png
[macosx-logo]: https://github.com/FPGAwars/apio/raw/master/docs/resources/images/macosx.png
Expand Down
2 changes: 1 addition & 1 deletion apio/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
# - Information for the Distribution package
# --------------------------------------------

VERSION = (0, 8, 2)
VERSION = (0, 9, 0)
__version__ = ".".join([str(s) for s in VERSION])

__title__ = "apio"
Expand Down
6 changes: 5 additions & 1 deletion apio/commands/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,11 @@
@click.option(
"--verbose-pnr", is_flag=True, help="Show the pnr output of the command."
)
@click.option("--top-module", type=str, metavar="top_module", help="Set the top level module (w/o .v ending) for build.",
@click.option(
"--top-module",
type=str,
metavar="top_module",
help="Set the top level module (w/o .v ending) for build.",
)
def cli(
ctx,
Expand Down
2 changes: 1 addition & 1 deletion apio/managers/arguments.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ def process_arguments(args, resources): # noqa
var_pack = None
var_idcode = None
var_verbose = {}
var_topmodule= None
var_topmodule = None

if var_board:
if isfile("apio.ini"):
Expand Down

0 comments on commit bfa5d73

Please sign in to comment.