Giter Site home page Giter Site logo

jgoeders / siliconcompiler Goto Github PK

View Code? Open in Web Editor NEW

This project forked from siliconcompiler/siliconcompiler

1.0 0.0 0.0 337.84 MB

A modular build system for hardware

Home Page: https://docs.siliconcompiler.com/en/latest/

License: Apache License 2.0

Shell 1.06% C++ 0.04% Python 80.49% C 0.01% Scala 0.07% Tcl 6.54% VHDL 0.03% Verilog 7.16% SystemVerilog 1.06% CMake 0.18% Cython 2.25% Jinja 1.12%

siliconcompiler's Introduction

SiliconCompiler

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

What is SiliconCompiler?

A modular build system for hardware ("make for silicon"). The project philosophy is to "make the complex possible while keeping the simple simple".

SC Overview

The project foundation is a standardized dynamic JSON schema for configuring and tracking of compile time parameters related to design setup, libraries, tools, Process Design Kits (PDKs), flows, constraints, compiler time options, and run time metrics, advanced projects (like ASICs) are far too complex to be handled manually through markup languages like JSON/YAML, so the project also includes a simple (but powerful) object oriented Python API for compilation setup, run time scheduling, and results analysis. For more information about the project motivation and design philosophy, you can refer to 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.

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.

Supported Technologies

Type Supported
Languages C, Verilog, SV, VHDL, Chisel, Migen/Amaranth, Bluespec
Simulation Verilator, Icarus, GHDL
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, asap7, freepdk45, gf12lp, intel16

Getting Started

SiliconCompiler is available as wheel packages on PyPI for macOS, Windows and Linux platforms. For working Python 3.6-3.11 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

Important

To run this code from a script, please add if __name__ == "__main__": as shown in the docs

To reduce the pain of tool installation, the project supports free remote compilation at siliconcompiler.com.

Simple designs can be compiled using the built in command line 'sc' app:

sc -remote -target "asic_demo"

Documentation

The full reference manual and tutorials can be found HERE.

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

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.

License

Apache License 2.0

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

siliconcompiler's People

Contributors

aolofsson avatar gadfort avatar nmoroze avatar wransohoff avatar gabrielaguirre1 avatar aulihant avatar kimiatkh avatar zyedidia avatar troibe avatar suppamax avatar tommarin avatar bsanzhiev avatar hohe avatar mgielda avatar sconvent avatar oharboe avatar

Stargazers

Dmitry Murzinov avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.