f4pga / f4pga/ideas

Symbiflow package manager

Open
#15 8 comments 0 reactions 0 assignees View on GitHub
enhancement help wanted type-coding type-infra
Dominant language
No language data
Stars
86
Forks
9
PR merge metrics
No merged PRs in 30d

Description

# Symbiflow package manager / build system

# Brief explanation

To be productive writing fpga code there needs to be a great package manager. Not sure if it is in the scope of symbiflow, but using the rust project as priori art, and the fact that most toolchains without a defacto package manager have pretty terrible and fragmented solutions, it makes sense to have a package manager be tightly coupled to a toolchain.

It should be hdl agnostic - so adding preprocessing steps before verilog should be easy. This would be the basis for integrating symbiflow into existing IDE's. To quickly get a non-sucking package manager up and running an option would be to start out with a non-sucking package manager like cargo (using it as a dependency), to get the configuration file parsing, dependency install|upgrade|lock and package publishing with little work. Then adding custom commands / replacing existing commands.

# Detailed Explanation
Command line interface

```sh
symbiflow (new|install|lock|build|test|sim|synth|flash|publish|netlist|floorplan)

symbiflow flash --board icestick
```

Example configuration file `Symbiflow.toml`
```toml
[package]
name = "some name"
version = "0.1.0"
authors = ["david@craven.ch"]
repository = "https://github.com/dvc94ch/example"
license = "ISC"

[dependencies]
ip = "0.1.0"
other-ip = { git = "https://github.com/owner/repo" rev="sha1" }

[build]
language = "myhdl"

[board.icestick]
target = "ice40-1k-tf144"

[target.ice40-1k-tf144]
pnr = "arachne-pnr"
```

Example project layout
```
.
├── boards
│   └── icestick
│   ├── top.pcf
│   └── top.py
├── rtl
│   └── top.py
├── Symbiflow.toml
└── tests
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.