Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ucb-substrate/substrate

21st century electronic design automation tools, written in Rust.
https://github.com/ucb-substrate/substrate

Last synced: 2 months ago
JSON representation

21st century electronic design automation tools, written in Rust.

Awesome Lists containing this project

README

        

# Substrate

21st century design automation tools.

## Installation/Usage

Substrate is a library, and cannot be run by itself.
To use Substrate, [install Rust](https://www.rust-lang.org/tools/install),
clone this repository, and then add `substrate` as a dependency in your project's Cargo.toml:

```toml
[dependencies]
substrate = { path = "/path/to/substrate" }
```

Ensure that your `~/.cargo/config.toml` file contains the following lines:
```toml
[net]
git-fetch-with-cli = true
```

Substrate is developed and tested using the latest version of Rust.

Please note that all APIs are under development and may change without warning.

## Documentation

The Substrate API documentation can be generated by running
```bash
cargo doc --open
```
(omit the `--open` flag if you don't want to automatically open the docs).

To include internal/private APIs in the generated documentation, run
```bash
cargo doc --document-private-items
```

## Testing

Before running the tests, you must:
* Install [ngspice](https://ngspice.sourceforge.io/) v39 and add it to your `PATH`.
* Clone the [skywater-pdk](https://github.com/google/skywater-pdk) repository and set
the `SKY130_OPEN_PDK_ROOT` environment variable to point to the root of the repository.
We recommend using an absolute path.
* Ensure that the submodules in `skywater-pdk/libraries/*` are present on your system.

To run the Substrate tests (both unit and integration tests), run

```bash
make test
```

from the root of the Substrate repository.

Substrate integration tests can be found in `substrate/tests`.
These tests double as examples of how to use Substrate.
If you wish to see the artifacts generated by an integration test,
look in the appropriate folder in `substrate/build/tests`.

## Contributing

If you'd like to contribute to Substrate, please let us know. You can:
* Ping us in the `#substrate` channel in the Berkeley Architecture Research Slack workspace.
* Open an issue.
* Email `rahulkumar -AT- berkeley -DOT- edu`.

Documentation updates, tests, and bugfixes are always welcome.
For larger feature additions, please discuss your ideas with us before implementing them.

Contributions can be submitted by opening a pull request against the `main` branch
of this repository.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion
in the work by you shall be licensed under the BSD 3-Clause license, without any additional terms or conditions.

## Acknowledgements

Portions of Substrate are derived from the [Vlsir](https://github.com/Vlsir/Vlsir)
and [Layout21](https://github.com/dan-fritchman/Layout21) projects, which were
written by Dan Fritchman, Arya Reais-Parsi, Aviral Pandey, and others.
These projects are licensed under the BSD-3-Clause license.