A compiler framework that automates translation from source code to silicon.
Project description
Introduction
SiliconCompiler is a modular hardware build system ("make for silicon"). The project philosophy is to "make the complex possible while keeping the simple simple".
Supported Technologies
Type | Supported |
---|---|
Design Languages | C, Verilog, SV, VHDL, Chisel, Migen/Amaranth, Bluespec |
Simulation Tools | Verilator, Icarus, GHDL, Xyce |
Synthesis | Yosys, Vivado, Synopsys, Cadence |
ASIC APR | OpenRoad, Synopsys, Cadence |
FPGA APR | VPR, nextpnr, Vivado |
Layout Viewer | Klayout, OpenRoad, Cadence, Synopsys |
DRC/LVS | Magic, Synopsys, Siemens |
PDKs | sky130, gf180, asap7, freepdk45, gf12lp, gf22fdx, intel16 |
Getting Started
SiliconCompiler is available as wheel packages on PyPI for macOS, Windows and Linux platforms. For working Python 3.8-3.12 environment, just use pip.
python -m pip install --upgrade siliconcompiler
Converting RTL into DRC clean GDS takes less than 10 lines of simple Python code.
import siliconcompiler # import python package
chip = siliconcompiler.Chip('heartbeat') # create chip object
chip.load_target('skywater130_demo') # load a pre-defined target
chip.input('heartbeat.v') # set input sources
chip.clock('clk', period=10) # set constraints
chip.set('option','remote', True) # enable remote execution
chip.run() # run compilation
chip.summary() # print summary
chip.show() # show layout
Simple designs can be compiled in a single line using the built in command line 'sc' app:
sc -remote -target "asic_demo"
Why SiliconCompiler?
- Ease-of-use: Programmable with a simple Python API
- Portability: Powerful dynamic JSON schema supports ASIC and FPGA design and simulation
- Speed: Flowgraph execution model enables cloud scale execution.
- Friction-less: Remote execution model enables "zero install" compilation
- Modularity: Tool abstraction layer makes it easy to add/port new tools to the project.
- Provenance: Compilation manifests created automatically during execution.
- Documented: An extensive set of auto-generated high quality reference documents.
- In-use: Actively used by Zero ASIC for commercial tapeouts at advanced process nodes.
Documentation
The full reference manual and tutorials can be found HERE.
License
How to Cite
If you want to cite our work, please use the following paper:
A. Olofsson, W. Ransohoff, N. Moroze, "Invited: A Distributed Approach to Silicon Compilation", 59th Design Automation Conference (DAC), 10-14 July 2022, San Francisco, CA, USA. Published, 7/2022.
Bibtex:
@inproceedings{10.1145/3489517.3530673,
author = {Olofsson, Andreas and Ransohoff, William and Moroze, Noah},
title = {A Distributed Approach to Silicon Compilation: Invited},
year = {2022},
booktitle = {Proceedings of the 59th ACM/IEEE Design Automation Conference},
pages = {1343–1346},
location = {San Francisco, California}
}
Installation
Complete installation instructions are available in the Installation Guide.
To install the project from source (recommended for developers only).
git clone https://github.com/siliconcompiler/siliconcompiler
cd siliconcompiler
python -m pip install -e . # Required install step
python -m pip install -e .[docs,test] # Optional install step for generating docs and running tests
EDA Tool Installation
Installation instructions for all external tools can be found in the External Tools section of the user guide. We have included shell setup scripts (Ubuntu) for most of the supported tools. See the ./setup directory for a complete set of scripts and ./setup/_tools.json for the currently recommended tool versions.
Contributing
SiliconCompiler is an open-source project and welcomes contributions. To find out how to contribute to the project, see our Contributing Guidelines.
Issues / Bugs
We use GitHub Issues for tracking requests and bugs.
More information
Resources | Link |
---|---|
Website | https://www.siliconcompiler.com |
Documentation | https://docs.siliconcompiler.com |
Sources | https://github.com/siliconcompiler/siliconcompiler |
Issues | https://github.com/siliconcompiler/siliconcompiler/issues |
RFCs | https://github.com/siliconcompiler/rfcs |
Discussion | https://github.com/siliconcompiler/siliconcompiler/discussions |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Hashes for siliconcompiler-0.26.0-cp312-cp312-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8fd720a63a9c2b2e026fd59785c40862bffacce1758375c34abfa9c8aa36a454 |
|
MD5 | 66f02050830eb0183e7d7ed3f3fb6100 |
|
BLAKE2b-256 | ec0ee008f781c171b4562ebb0a29ce34ed961f58e2f5a4c0da2ff47d096d2b70 |
Hashes for siliconcompiler-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f56202fef6100b33e7ff476e0cb99c300e772c0d90a832c3b29893350421e027 |
|
MD5 | 9fd21ac449cc859e04213f7031076203 |
|
BLAKE2b-256 | 55962a342a228b5d84f1794e5f80037a259795e53395ebca1113056886e8bea5 |
Hashes for siliconcompiler-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d7fd3ece1993463ca20324b9168b7f3ee0cb67f92ecd2742a92d99460ef2a502 |
|
MD5 | ed74e17721c06d3929fb5398d5b80b30 |
|
BLAKE2b-256 | 93515e8e869d4cd67d58998ba677d9c357b8ea2270a36da55c0d7d515b99ac4b |
Hashes for siliconcompiler-0.26.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f9a80fcf10f952451c82ebc70f3767480852ff33522e470c2c5f900d4bab4628 |
|
MD5 | 833c5c82012454388e5b6ae2a494fadb |
|
BLAKE2b-256 | 9de9d95a39f1bd3c6a24987c70853d8602fa5a1db4590ad56d5857f6e595cec3 |
Hashes for siliconcompiler-0.26.0-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1bde26f1b40fb1bb6c3a142741175e4093ddd66645c73d39cc2f9bf4c1ee4aa1 |
|
MD5 | 183a6ace2ea7094d12c8de95dc53f0bc |
|
BLAKE2b-256 | 556a3b80459e491e7cde95a3f8e0f2065711a7b1ff75c9899b80cde6c4f62a23 |
Hashes for siliconcompiler-0.26.0-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d6105464a4698a1dc31768b3b1cb4d08c78922da46db05225f9a7a91aaeebfcf |
|
MD5 | 9abb0a9ec4825d75f066541e2d955e4b |
|
BLAKE2b-256 | eb8b054235b6bc4eba5a01b302727962d3c27dea75da99774af30047a5df2715 |
Hashes for siliconcompiler-0.26.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 373abbdebd1fc8c5b7676d5be8132070e0fc0916b6414e51de4b7023cb995b66 |
|
MD5 | 2e07b561e3d7ebe572769c28d166d0db |
|
BLAKE2b-256 | 9d27ab9b885738cb9b41bf4d58535a2fe245d1f45534231aec6acd233928cc70 |
Hashes for siliconcompiler-0.26.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 561d358856380db99d18e96d55e346f4dc36e253742ee9fde393ae00da368441 |
|
MD5 | 0933014f8d94ce2f0eb1bd757723a7ff |
|
BLAKE2b-256 | a05c24eb01af8d1f122e7af2b41d1947b4ac381f176d38baf91e52eec8bb7543 |
Hashes for siliconcompiler-0.26.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5ea2846a34adb846a34aa089d55a7d580fad57405c5ab1404f2f831b055f1eef |
|
MD5 | 67b603be5ec56c0e22821305e10563a4 |
|
BLAKE2b-256 | 83ffab050786c1c93f6aec53d38126b9fe98e83ae42632cc79e3d0fd92b23615 |
Hashes for siliconcompiler-0.26.0-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 05bd346904200dec704d304dbb22a1a874df6a9a50103a372287b97206ef20ae |
|
MD5 | 96f772b4c1f182240772db0f596d356d |
|
BLAKE2b-256 | b252163f25dc76b71aadf65111c2f898145af0cdc5ab9ea63d19c1105133b8e3 |
Hashes for siliconcompiler-0.26.0-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 86399522f9b0d792ed8b06da4acf3592829caa98f7a69ce02c39a769b99980aa |
|
MD5 | dc5a3f1106ac1a6676312cfc00f78315 |
|
BLAKE2b-256 | 602184bbdd48e34dfb59a3313e52772d0b80c4b8c0e823edf27fcbfedfec2d50 |
Hashes for siliconcompiler-0.26.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d650280e996f7afe6c421c6ac55369edbe87f0b54f0cec4c204e71ea76c59256 |
|
MD5 | 8bf014bd2df17beedb264c4c2f547953 |
|
BLAKE2b-256 | a4da847c9b0e91d67d7bf294349c3bbb71ac9a4aa3869ce0a5f7293e27dceb41 |
Hashes for siliconcompiler-0.26.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b185c85fb296cd70e4c290fc8968d3e82c7aef700c2309ef9a54af15217ec3e9 |
|
MD5 | 95074a4cdee5f5c990024e0584fb92b1 |
|
BLAKE2b-256 | 31f3fa1e80cd51177f58c7ce5c21e3c876b6b301706ebf6878ea275500ce177f |
Hashes for siliconcompiler-0.26.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2cc9da60b46fc70e5bc39c821bb305f3a01f894650a16f25cd0dfbd5e348ea51 |
|
MD5 | 7956238cb4ba867a0a16548cc316ca87 |
|
BLAKE2b-256 | 3bfb50fa0b8740cb33282bd209dd1eff0d17b59d762da50dafcb6943a11621b1 |
Hashes for siliconcompiler-0.26.0-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1b71020fc05eaeb6a6d23f34e304cd40df04dd1a276b08aaf74d24fb973f3d46 |
|
MD5 | 69edef6b439db37bedcee498a05a99c5 |
|
BLAKE2b-256 | 08279254a64ace488d69bf60b115357770c724fe2f1e6d9321f708da933dc1bb |
Hashes for siliconcompiler-0.26.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 685941b4c82d8ac3bc8de6374f42de1982f6660069d8447ec085e605e58550e4 |
|
MD5 | ccf59f92da51643b9fe40846c6b9f650 |
|
BLAKE2b-256 | 443d0ef12058ac1b24761d2f1e4b5c38b6c44f30d00b5a490d9abd6cd1ad1b34 |
Hashes for siliconcompiler-0.26.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 65fdf23dd5de8492b73a8d8bd511428737a3966c55a3718c999a071093537024 |
|
MD5 | 02b62f0fd7d556db6da19b72b59fc693 |
|
BLAKE2b-256 | c7f7636ec003d215140174e10101f4e34ef194925e7bfd0e49893233530e6907 |
Hashes for siliconcompiler-0.26.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3308c84899acae312c68e6f06a7cd4acaeb3da72515daed7117d6850e6b50ae5 |
|
MD5 | c457f87d2451caa6adcd7f10c20cbe4d |
|
BLAKE2b-256 | b3ed84cd8b8c82d569e37ef95cec1051f833b250104ab254f3a2cfde015e53ea |
Hashes for siliconcompiler-0.26.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5fafeee03c9dd0c41b4f6d877f7e06c713cbff68aecc921571a0639feef53ecd |
|
MD5 | c8af75ecbd5e9d668dcdd57b8c32a6d3 |
|
BLAKE2b-256 | e2bef69e7b8a8c040c245459f927a6c422b24bb4df581aa03cf99d2f122335cd |
Hashes for siliconcompiler-0.26.0-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fc95f8c04582d001e484ef1c009380aab8f54643e4d82d448f086cbd739bbfd3 |
|
MD5 | 474731f6ef1d44be272a3e5f24b05f1f |
|
BLAKE2b-256 | 8a013c6e1ae1f79371abdc0ed298e6ef48d0f5ef39e97eddb831f00c0c2d8516 |
Hashes for siliconcompiler-0.26.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 583de7fa3d7ea8f9cfa0b3f28eae7254f82ff94a61319a9e61b8c31137ef8d92 |
|
MD5 | 3ae40d6e0cddd12a8fb3a6874688482a |
|
BLAKE2b-256 | d8f0c1fab89a68d64ec998f8d72a1bc3c9677d07b4c6a4df96005bc223b7e3ec |
Hashes for siliconcompiler-0.26.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c4b40672a609dae57bf54cc96ef103fe652d35d29283c9d1d5d490a1ad2f4e48 |
|
MD5 | c5d2c1c0de05bba76939a6d1289f5c7d |
|
BLAKE2b-256 | 938bacd3f4249f5c0e7c06249361841d4c4dcdeeb9f813e1967cf84480ad7281 |
Hashes for siliconcompiler-0.26.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1f0df685c3c7b5e8c53100f09da60dc36578397e29aeb3f9f6a7daf42475d65c |
|
MD5 | 5e38ebcc4f827c0efd537993a3d1ad02 |
|
BLAKE2b-256 | 5101c58a0ee683fc6febc619341dcd9fdc8b38470cc906a473df2cbb67e54397 |
Hashes for siliconcompiler-0.26.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 32785f5437a208dfebd8383429361cc16e4e362574b9cc5f6f1bcc1c1b90799b |
|
MD5 | c318f3a4c54a78e3c3210cb76ec87a4e |
|
BLAKE2b-256 | a3f29b5cd88841a5260e20daa02cfea14f3ff56e158ad05629d0c3e3881ac64d |
Hashes for siliconcompiler-0.26.0-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6cec38fa711f9970e086e6597d195bb948b7a2841ebd4e820a9fb39da9584073 |
|
MD5 | 83dd5f3ff8d1933bf752196b99e3e38e |
|
BLAKE2b-256 | f1e9a49719184e90a0dc84eb4b461b45963f2968505902440b9840a1f7d00f3c |