Skip to content

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

License

Notifications You must be signed in to change notification settings

ucb-substrate/substrate

Repository files navigation

Substrate

21st century design automation tools.

Installation/Usage

Substrate is a library, and cannot be run by itself. To use Substrate, install Rust, clone this repository, and then add substrate as a dependency in your project's Cargo.toml:

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

Ensure that your ~/.cargo/config.toml file contains the following lines:

[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

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

cargo doc --document-private-items

Testing

Before running the tests, you must:

  • Install ngspice v39 and add it to your PATH.
  • Clone the 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

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 and 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.

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages