Files
retroSoC/physical/ecc

ECC Setup and ICS55 Core Hardening

make ecc-setup installs the latest official ECOS Chip Compiler release and its required toolchain by directly executing:

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

The setup helper uses Bash with pipefail so a failed download or installer returns failure. It does not save the installer script or pin ECC versions in the repository dependency lock. The upstream installer selects versions, checks payload checksums, and installs ECC, OSS CAD Suite, ECC Sizer and the ICS55 PDK. Every explicit setup invocation follows latest; the installer manages reuse of same-version downloads and installations.

Run from the repository root, without a SoC profile:

make ecc-setup
"${XDG_BIN_HOME:-$HOME/.local/bin}/ecc" --version
"${XDG_BIN_HOME:-$HOME/.local/bin}/ecc" version --json
export PATH="${XDG_BIN_HOME:-$HOME/.local/bin}:$PATH"

The official installer currently requires Linux x86_64 with glibc >= 2.34, curl, GNU tar, gzip, bzip2 and sha256sum; the repository entrypoint also needs Bash and Python 3. Setup verifies the resulting executable wrapper and its version/runtime JSON before reporting success.

No install-directory environment variables are overridden. With upstream defaults, the wrapper is ~/.local/bin/ecc, versioned ECC/tools/PDKs live in ~/.local/share/ecc/, downloads in ~/.cache/ecc/downloads/, and the receipt in ~/.config/ecc/ecc-receipt.json. Existing ECC_INSTALL_DIR and XDG variables are handled by the official script. The wrapper selects the installed private toolchain. Setup prints PATH guidance without changing shell startup files or creating a repository activation script. Old clones and caches are not removed.

Existing physical adapter

The physical adapter targets the padless retrosoc_core macro on the committed configs/ci/ics55.mk profile. It retains its independent locked PDK inputs, H7CR slow Liberty view, source export and multi-clock constraints. Installing the upstream private PDK does not replace those shared inputs.

Physical targets use the already installed wrapper, defaulting to ${XDG_BIN_HOME:-$HOME/.local/bin}/ecc; override ECC_BIN to select another installation. They do not implicitly install or update ECC. Doctor records the actual CLI version and checks the project rather than requiring alpha.10.

The existing harden configuration and current profile still require compatibility qualification with the installed release. Installing ECC alone does not establish that ecc-doctor, ecc-core, or ecc-package will pass. This setup change does not migrate or validate synthesis, STA, place-and-route, or Tiny/ICS55 support. The profile, clock, padless-cell and project checks remain in place and report actual incompatibilities.

Physical outputs remain below build/<variant>/physical/ecc/core/. This experimental adapter does not establish foundry DRC/LVS, IR/EM, ESD, package, board or production-signoff closure.