Skip to content

feat(data): accept post-route LEC aliases in dynamic flow steps - #253

Open
Emin017 wants to merge 1 commit into
mainfrom
emin/lec-step-name-aliases
Open

feat(data): accept post-route LEC aliases in dynamic flow steps#253
Emin017 wants to merge 1 commit into
mainfrom
emin/lec-step-name-aliases

Conversation

@Emin017

@Emin017 Emin017 commented Sep 2, 2026

Copy link
Copy Markdown
Member

What Changed

  • _normalize_flow_step_name (dynamic flow construction from GUI/agent flow_config) now aliases postlec / postroutelec — with the existing case-insensitive, _/-/space-separator-tolerant normalization — to the canonical postRouteLec step name.
  • Before this, only the exact spelling postRouteLec survived normalization; hand-written variants such as post_route_lec or Post-Route-LEC fell through unchanged, failed the canonical harden-flow intersection in build_dynamic_flow_data, and the post-route LEC step was silently dropped from the workspace's initial flow.json. Every other coarse step already had aliases; the LEC step had none.
  • Tests: parametrized coverage of the exact, short, underscored, dashed, and spaced-camel spellings in flow_config.steps, plus alias acceptance in start_step/end_step boundary derivation, asserting canonical ("postRouteLec", "yosys_lec") output.

No behavior change for existing workspaces: this only widens which flow_config spellings keep the LEC step at workspace-creation time; persisted flow.json files are untouched.

Scope

  • CLI - command behavior, Typer command surface, output formats, or workspace commands.
  • Flow/runtime - workspace lifecycle, EngineFlow, step execution, logs, metrics, or artifacts.
  • EDA integration - Yosys, ECC-Tools, DreamPlace, KLayout, PDKs, or native/runtime wrappers.
  • Build/package - Nix, PyInstaller, wheels, uv.lock, or release artifacts.
  • CI/release - GitHub Actions, version checks, changelog, or release automation.
  • Tests/docs only

Flow/runtime is checked for workspace lifecycle only: initial flow.json construction in data/workspace/__init__.py. No engine, tool, or artifact behavior changes.

Runtime And Packaging Impact

  • No runtime or packaging impact
  • CLI output or machine-readable contract changed
  • Workspace layout, flow state, or artifact paths changed
  • Native toolchain or wrapper behavior changed
  • ecc-tools or ecc-dreamplace dependency changed
  • PyInstaller, Nix, or release artifact changed

Notes:

  • No schema or format change. Input acceptance widens: flow_config spellings like post_route_lec now resolve to postRouteLec instead of being silently filtered out, so affected workspace creations keep the LEC step in flow.json. Existing workspaces and all current callers that pass canonical names see no difference.
  • The ECOS Studio GUI companion change sends exact canonical names and does not depend on this PR; this tolerance is for hand-written or agent-produced flow configs.

Validation

  • uv run pytest test/ — 1534 pass, 4 skipped, 4 xfailed; 2 pre-existing failures (test/integration/test_rcx_flow.py::test_ics55_gcd and test_rtl2gds_flow.py::test_ics55_gcd, both AttributeError at setup) reproduce identically on 1f910c3c (main) in this environment, unrelated to this change.
  • uv run ruff check chipcompiler test (all checks passed)
  • uv run ruff format --check chipcompiler test (239 files already formatted)
  • PyInstaller smoke: ecc --help, ecc --version, ecc version --json
  • Nix smoke: nix run .#cli -- --help
  • Manual flow smoke:
  • Other: codex review (gpt-5.6-sol:high) of the commit; findings (alias-contract wording, separator coverage, parametrized tests) addressed in the amended commit.

Skipped checks and reason:

  • PyInstaller/Nix/manual smokes: no CLI, packaging, or toolchain surface changed; the normalization path is exercised by the unit tests above.

Checklist

  • I kept the change scoped to ECC.
  • I updated docs or user-facing CLI text where behavior changed.
  • I included lockfile or version metadata updates when dependencies changed.
  • I documented any submodule updates and why they are needed.
  • I did not include local caches, virtual environments, or generated build outputs.
  • I explained skipped validation and remaining risk.

Notes: no user-facing CLI text exists for flow_config spellings; no dependency or submodule changes.

Normalize postlec/postroutelec (with the existing separator handling
for underscore, dash, and space, case-insensitive) to the canonical
postRouteLec step name so flow_config selections keep the LEC step
instead of silently dropping it.
@Emin017 Emin017 added the bug Something isn't working label Sep 2, 2026
@Emin017 Emin017 added this to the 0.1.0-alpha.12 milestone Sep 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant