ECOS Chip Compiler is an open-source chip design automation solution that integrates EDA tools (Yosys, ECC-DreamPlace, ECC-Tools, KLayout) to achieve complete RTL-to-GDS design flow. Developed and maintained by the ECOS Team.
The GUI (ECOS Studio) has been moved to the ecos-studio repo.
How to use:
- CLI (
ecc) - Project-oriented command-line flow execution - Python API - Use
chipcompileras a library
Install the ecc CLI (Linux x86_64, glibc 2.34+, fontconfig):
curl -fsSL http://release.openecos.com/installers/ecc/latest/ecc-installer.sh | shTo also install Yosys (OSS CAD Suite) and the ICS55 PDK:
curl -fsSL http://release.openecos.com/installers/ecc/latest/ecc-installer.sh | sh -s -- --with-toolchainThe wrapper is installed to ~/.local/bin by default. If that directory is not
on PATH, add it:
export PATH="$HOME/.local/bin:$PATH"With Nix installed, clone the repository with
submodules (required — chipcompiler/thirdparty/ pulls in ecc-tools and
ecc-dreamplace), then run ECC via the flake:
git clone --recursive https://github.com/openecos-projects/ecc.git
cd ecc
nix run . -- --helpIf you already cloned without --recursive:
git submodule update --init --recursiveFor Python development with uv, clone the repository as above (with
--recursive), then set up the workspace — the recommended way to develop
from source:
uv sync --no-build-isolation-package ecc-dreamplace --no-build-isolation-package ecc-tools-bin --verboseSee the Development Guide for the full setup.
To build the installable CLI bundle yourself (the same PyInstaller pipeline as the official release):
ECOS_PYINSTALLER_MODE=onedir uv run --no-sync --managed-python \
pyinstaller ecc.spec --clean --noconfirm
# rebuilds dist/ecc/ (onedir, ~0.9G; the first run triggers dreamplace's cmake install, which is normal)
# Install locally (overwrite your install location, e.g. ~/.local/ecc;
# a PATH symlink pointing at it needs no change)
rm -rf ~/.local/ecc && mkdir -p ~/.local/ecc && cp -a dist/ecc/. ~/.local/ecc/
ecc --help # verify the expected commands are listedThe commands below use the installed ecc. Without installing, prefix each
command with nix run . -- (e.g. nix run . -- init gcd).
If you installed with --with-toolchain, Yosys and the ICS55 PDK are already
configured by the ecc wrapper. Otherwise re-run the installer with
--with-toolchain. The Nix flake provides Yosys itself; set pdk.root if you
are not using the installer toolchain.
Create a project and add your RTL:
ecc init gcd
cp /path/to/gcd.v gcd/rtl/gcd.v # example design: docs/examples/gcd/gcd.vecc init generates gcd/ecc.toml. Edit it as needed. pdk.root is required
unless CHIPCOMPILER_ICS55_PDK_ROOT is already set (the installer
--with-toolchain wrapper does this):
[design]
name = "gcd"
top = "gcd"
rtl = ["rtl/gcd.v"]
clock_port = "clk"
frequency_mhz = 100.0
[pdk]
name = "ics55"
root = "/path/to/icsprout55-pdk"
[flow]
preset = "rtl2gds" # rtl2gds | syn_sta | synthesis_lecThen validate and run:
ecc check --project gcd
ecc run --project gcd
ecc status --project gcd
ecc log --project gcdBy default, named workspaces are created at <project>/<workspace-id>. To
create or select one at an exact external directory, pass the absolute path as
the --workspace selector:
ecc run --project gcd --workspace /data/ecc/gcd/experiment
ecc workspace import recovered --project gcd --path /archive/ecc/gcd/recovered
ecc run --project gcd --workspace recovered --resumeFor ecc run, a single-segment value is a workspace name and keeps the
project-local layout; an absolute value is an external workspace path. The
path basename is used as the new workspace ID unless the path is already
registered. project.json records the canonical path, so later commands can
select the workspace by its registered ID.
Run ecc --help (or ecc <command> --help) for full usage. Common commands:
| Command | Description |
|---|---|
ecc init <name> |
Create a project skeleton and ecc.toml |
ecc check |
Validate RTL, constraints, PDK, tools, and config |
ecc doctor |
Probe host environment: PDK, yosys (+slang), bundled tools |
ecc doc <topic> |
Read the bundled guides (config reference, ug user guide, tutorial) in the terminal |
ecc run |
Run the configured RTL-to-GDS flow (--preset overrides for one run) |
ecc status |
Show a quick run/step progress summary |
ecc log [step] |
Show available logs or step log content |
ecc config [step] |
Show resolved project or step configuration |
ecc migrate |
Migrate a legacy runs/ project to the manifest layout |
ecc param |
Manage parameter overrides (list, show, set, unset, diff) |
ecc pdk |
Manage the PDK path (set-root, show, unset) |
ecc project |
Edit project declarations in ecc.toml (set, unset, add, remove, show) |
ecc workspace |
Import existing workspaces or refresh them from project configuration |
ecc signoff |
Inspect readiness and export the signoff package |
ecc report |
Write design-summary, QoR, checklist, and step reports |
ecc version |
Show ECC runtime and component versions |
ecc layout-image |
Render a GDS file into a layout image |
Project commands accept --project <dir> (defaults to the current directory).
Most commands support --plain output for scripting.
The full guides ship with the CLI and work offline: ecc doc ug (user guide,
--lang cn for 中文), ecc doc config (configuration reference), and
ecc doc tutorial (step-by-step first flow).
- Complete RTL-to-GDS Flow - Synthesis, placement, routing, timing optimization
- Open-Source EDA Integration - Yosys (synthesis), ECC-DreamPlace (placement), ECC-Tools (CTS, routing, signoff), KLayout (viewer)
- CLI Automation - Scriptable flow execution from command line
- Portable Deployment - Installer or Nix
| Tool | Purpose | Status |
|---|---|---|
| Yosys | RTL Synthesis | ✅ |
| ECC-DreamPlace | Placement | ✅ |
| ECC-Tools | Physical Design (CTS, Routing, Signoff) | ✅ |
| KLayout | Layout Viewer | ✅ |
- Documentation Index - Complete navigation
- Development Guide - Setup and workflows
- Examples - Usage examples
Contributions welcome! See CONTRIBUTING.md for the rules and review expectations, and the Development Guide for setup instructions.
Special thanks to these open-source projects:
- Yosys - RTL Synthesis
- ECC-DreamPlace - Placement
- ECC-Tools - Physical Design Backend
- KLayout - Layout Viewer
- nixpkgs - A collection of Nix packages
Built by the ECOS Team