Skip to content

huang3527/edaflow-lite

Repository files navigation

edaflow-lite

A minimal, end-to-end mock EDA signoff pipeline to demonstrate parsing, data normalization, and automation workflows.

This repo implements a lightweight, mock “EDA signoff” flow:

  • Parse a simplified STA timing report
  • Compute violation summaries (WNS/TNS, group breakdown, inferred violation types)
  • Visualize slack distribution
  • (Optional) baseline ML scaffold for violation classification

Repo Structure

edaflow-lite/
├── edaflow.py
├── pyproject.toml
├── reports/
│   └── timing_report.txt
├── parser/
│   ├── timing_parser.py
│   ├── violation_summary.py
│   └── adapters/
│       └── mock_sta.py
├── visualize/
│   └── slack_distribution.py
├── ml/
│   └── violation_classifier.ipynb
├── tests/                  # (optional but recommended)
└── .github/workflows/       # (optional but recommended)

Quickstart

v0.1 (module-level scripts)

1) Create venv & install deps

python -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install matplotlib pandas scikit-learn

2) Parse report -> JSON:

python -m parser.timing_parser --report reports/timing_report.txt

3) Summary report

python -m parser.violation_summary --report reports/timing_report.txt

4) Plot slack distribution

python visualize/slack_distribution.py --report reports/timing_report.txt --out slack.png

Next Steps (Ideas)

•	Support real STA formats (PrimeTime/Tempus-like)
•	Extract more features: arrival/required times, cell arc, clock path delay
•	Add CSV/JSON outputs for dashboards
•	Add unit tests + CI

v0.2 (Signoff-style CLI)

Run full flow (default topk=20)

python edaflow.py --report reports/timing_report.txt --outdir out

Only violations

python edaflow.py --report reports/timing_report.txt --outdir out --violations-only

Filter by path group

python edaflow.py --report reports/timing_report.txt --outdir out --group clk_core

Top 50 worst paths (after filters)

python edaflow.py --report reports/timing_report.txt --outdir out --violations-only --topk 50```

Artifacts:

Generated under out/:

•	out/paths.json
•	out/paths.csv
•	out/summary.json
•	out/top_violations.csv
•	out/slack_distribution.png
•	out/summary.md

Roadmap

•	Real STA formats (PrimeTime / Tempus-like adapters)
•	Additional extracted features (arrival/required, clock path details)
•	Dashboard integration (Streamlit)
•	Unit tests + CI
•	Type checking (mypy) + lint (ruff)

v0.4 (Streamlit Dashboard)

Artifact viewer workflow

  1. Generate artifacts:
python edaflow.py --report reports/timing_report.txt --outdir out
  1. Launch dashboard:
streamlit run app.py

Features:

•	Upload or use sample timing report
•	Filter by path_group, violations-only, topk
•	View WNS/TNS metrics, top violations table, slack histogram
•	Download top_violations.csv and summary.md

About

Lightweight mock EDA signoff flow: parse STA timing reports, summarize violations, and visualize slack distribution.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors