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
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)
python -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install matplotlib pandas scikit-learnpython -m parser.timing_parser --report reports/timing_report.txtpython -m parser.violation_summary --report reports/timing_report.txtpython visualize/slack_distribution.py --report reports/timing_report.txt --out slack.png• 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
python edaflow.py --report reports/timing_report.txt --outdir outpython edaflow.py --report reports/timing_report.txt --outdir out --violations-onlypython edaflow.py --report reports/timing_report.txt --outdir out --group clk_corepython edaflow.py --report reports/timing_report.txt --outdir out --violations-only --topk 50```• out/paths.json
• out/paths.csv
• out/summary.json
• out/top_violations.csv
• out/slack_distribution.png
• out/summary.md
• 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)
- Generate artifacts:
python edaflow.py --report reports/timing_report.txt --outdir out- Launch dashboard:
streamlit run app.py• 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