Skip to main content

SiliconCompiler

Python CI Tests Tools CI Tests Daily CI Tests Wheels Lint Documentation Status codecov Downloads

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, MLIR
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 Klayout, Magic, Synopsys, Siemens
PDKs sky130, ihp130, 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.10-3.14 environment, just use pip.

pip install --upgrade siliconcompiler

Converting RTL into DRC clean GDS takes 13 lines of simple Python code.

from siliconcompiler import ASIC, Design               # import python package
from siliconcompiler.targets import skywater130_demo
design = Design("heartbeat")                           # create design object
design.set_topmodule("heartbeat", fileset="rtl")       # set top module
design.add_file("heartbeat.v", fileset="rtl")          # add input sources
design.add_file("heartbeat.sdc", fileset="sdc")        # add input sources
project = ASIC(design)                                 # create project
project.add_fileset(["rtl", "sdc"])                    # enable filesets
skywater130_demo(project)                              # load a pre-defined target
project.option.set_remote(True)                        # enable remote execution
project.run()                                          # run compilation
project.summary()                                      # print summary
project.show()                                         # show layout

[!NOTE] The required files can be found at: heartbeat example

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

Apache License 2.0

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
python3 -m venv .venv        # Setup virtual environment
source .venv/bin/activate
pip install --upgrade pip    # Update pip
pip install -e .             # Required install step
pip install -e .[test,lint]  # Optional install step for running tests and lint
pip install -e .[docs]       # Optional install step for generating docs

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, which can be accessed via sc-install. See the ./siliconcompiler/toolscripts directory for a complete set of scripts and ./siliconcompiler/toolscripts/_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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

siliconcompiler-0.38.0.tar.gz (3.7 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

siliconcompiler-0.38.0-py3-none-any.whl (4.3 MB view details)

Uploaded Python 3

File details

Details for the file siliconcompiler-0.38.0.tar.gz.

File metadata

  • Download URL: siliconcompiler-0.38.0.tar.gz
  • Upload date:
  • Size: 3.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for siliconcompiler-0.38.0.tar.gz
Algorithm Hash digest
SHA256 e8acdd23c5e0a13329f1741d49a9ca7656f555e68a8ee75bf7ee144e1e1f08fd
MD5 48779b9dc17f8b7238a177e554040ad3
BLAKE2b-256 0345c178c33197d90a389a827a0040a2996482ea3038bd1ef012cf5dcd923903

See more details on using hashes here.

Provenance

The following attestation bundles were made for siliconcompiler-0.38.0.tar.gz:

Publisher: wheels.yml on siliconcompiler/siliconcompiler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file siliconcompiler-0.38.0-py3-none-any.whl.

File metadata

File hashes

Hashes for siliconcompiler-0.38.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2f8a9bbccb2f7217e6d8f1242543c262b71fc15f451bf93f62fb4614a2499447
MD5 b67a5fdb4ecb18fa53553670ec4a7b20
BLAKE2b-256 ad370c39c4d713f9021aa7c8d25b89cf0ffbc8edc406dbad736d33aaf0798a5e

See more details on using hashes here.

Provenance

The following attestation bundles were made for siliconcompiler-0.38.0-py3-none-any.whl:

Publisher: wheels.yml on siliconcompiler/siliconcompiler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page