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 gcdRun 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 |
Refresh managed workspaces 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