Skip to content

feat(agent): add agent supported features - #261

Open
YihangQiu wants to merge 70 commits into
mainfrom
yhqiu/flow-agent-v2
Open

feat(agent): add agent supported features#261
YihangQiu wants to merge 70 commits into
mainfrom
yhqiu/flow-agent-v2

Conversation

@YihangQiu

@YihangQiu YihangQiu commented Sep 5, 2026

Copy link
Copy Markdown
Collaborator

What Changed

Scope

Select the areas touched by this PR:

  • 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

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:

Validation

List the commands you ran. Mark checks that are not applicable as N/A.

  • uv run pytest test/
  • uv run ruff check chipcompiler test
  • uv run ruff format --check chipcompiler test
  • PyInstaller smoke: ecc --help, ecc --version, ecc version --json
  • Nix smoke: nix run .#cli -- --help
  • Manual flow smoke:
  • Other:

Skipped checks and reason:

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.

Emin017 and others added 30 commits August 31, 2026 20:10
Lift the legalization owner check so Timing Opt can reuse DreamPlace
legalize-only, load ECC from explicit DEF/Verilog, and skip the
pre-sizer input DB.
Stage Sizer DEF/Verilog under data/to, rebuild ECC from those files,
run DreamPlace legalize-only, and publish only the post-legalize
layout. Drop the cached EngineDB after any sizer terminal state.
Honor read_def failure, close abandoned engines, and load explicit
sources once. Fill the workspace DreamPlace config path before inner
legalization if the map is empty.
Clear previous staging before launching Sizer, and delete published
Timing Opt files on every unsuccessful save, including exceptions.
Raise if staging or published artifacts cannot be deleted, and reset
Timing Opt subflow stages at the start of every Sizer attempt.
Register Timing Opt/sizer workspace configs so `ecc config` can inspect
the db and DreamPlace files the inner legalize path actually reads.
Split the oversized sizer runner tests into runner, cleanup, and
EngineFlow modules.
Restore create_db_engine(workspace, step). Timing Opt inner legalize
now replace()s a local step with staging DEF/Verilog and db=None
instead of adding loader kwargs.
Opening an old one-stage Sizer workspace rewrote subflow stages to
Unstart but left the outer step Success, so resume skipped Timing Opt
and routed the unlegalized DEF. Persistently unstart the owner and its
downstream suffix when that rewrite happens.
Insert sizer Timing Opt into the default rtl2gds/harden sequence
between legalization and routing so CTS cleanup still happens first
and Sizer sees a legal layout.
Download the latest successful linux-x64 Sizer build before pytest and
export PATH plus CHIPCOMPILER_ECC_SIZER_ROOT so default-flow Timing Opt
can run in CI.
Stop opening step.log.file with write truncation. Sizer now inherits
the EngineFlow stdio capture so GUI still shows the sizer error when
inner legalize later writes its own DreamPlace log.
Sizer now exposes build_step_metrics so EngineFlow can write
qor_metrics/summary after a successful Timing Opt. Reuse the
legalization DB summary and skip the Sizer binary check so QoR
refresh still works when Sizer is only needed at run time.
# Conflicts:
#	chipcompiler/tools/ecc/runner.py
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants