Skip to content

Repository files navigation

ECOS Chip Compiler (ECC)

Open-Source Chip Design Automation Solution

ECC ECC-Tools License

Python Nix

documentation 文档

Overview

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 chipcompiler as a library

Installation

Installer (recommended)

Install the ecc CLI (Linux x86_64, glibc 2.34+, fontconfig):

curl -fsSL http://release.openecos.com/installers/ecc/latest/ecc-installer.sh | sh

To 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-toolchain

The wrapper is installed to ~/.local/bin by default. If that directory is not on PATH, add it:

export PATH="$HOME/.local/bin:$PATH"

Nix

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 . -- --help

If you already cloned without --recursive:

git submodule update --init --recursive

Build from source

For 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 --verbose

See 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 listed

Quick Start

The 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.v

ecc 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_lec

Then validate and run:

ecc check --project gcd
ecc run --project gcd
ecc status --project gcd
ecc log --project gcd

CLI Commands

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 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).

Features

  • 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

🛠️ Integrated Tools

Tool Purpose Status
Yosys RTL Synthesis
ECC-DreamPlace Placement
ECC-Tools Physical Design (CTS, Routing, Signoff)
KLayout Layout Viewer

Documentation

Contributing

Contributions welcome! See CONTRIBUTING.md for the rules and review expectations, and the Development Guide for setup instructions.

Acknowledgments

Special thanks to these open-source projects:

Built by the ECOS Team

Report Issues · Discussions

About

A Chip Design Automation Solution with Open Source EDA Tools.

Topics

Resources

Code of conduct

Contributing

Stars

28 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages