You've already forked OrthoRoute
mirror of
https://github.com/bbenchoff/OrthoRoute.git
synced 2026-08-22 14:19:15 +00:00
- Create scripts/analyze_log.py: Standalone log parser for routing metrics extraction and golden comparison - Create scripts/optimize_and_validate.ps1: PowerShell automation wrapper for full optimization cycle - Create scripts/README.md: Comprehensive documentation for automation scripts - Create tests/regression/smoke_metrics.json: Golden thresholds for smoke test (100 nets, 4 layers) - Create docs/optimization/optimization_workflow.md: Complete optimization workflow guide (800+ lines) - Create docs/optimization/baseline_template.md: Standardized template for future optimization baselines - Extend launch_kicad_debug.ps1: Add -RunValidation flag for post-KiCad smoke test - Extend copy_to_kicad.ps1: Add -Validate switch for deployment validation - Update optimization docs: Add workflow references to QUICK_REF, README, golden_result_2026-04-10 - Update historical baselines: Add workflow tool references to 2026-04-03, 04-05, 04-08 Workflow enables fast iterative optimization: make change → sync → smoke test (30s) → analyze → commit Exit codes: 0=PASS, 1=FAIL routing, 2=WARN regression, 3=ERROR environment Smoke test becomes primary validation checkpoint (middle complexity: 100 nets vs 512 backplane)
49 lines
2.0 KiB
JSON
49 lines
2.0 KiB
JSON
{
|
||
"_comment": "Smoke test baselines for 100-net synthetic board. Fast validation checkpoint for optimization cycles.",
|
||
"_board": "Synthetic smoke board — 100 nets, 4-8 layers (generated in conftest.py), ~30s routing time",
|
||
"_note": "These are conservative thresholds with headroom. Update after establishing actual smoke test baselines.",
|
||
|
||
"nets_routed": 100,
|
||
"total_nets": 100,
|
||
|
||
"gpu": {
|
||
"_source": "Smoke test baseline — to be measured, currently estimated",
|
||
"_note": "Expected: ~10-20 iterations, <60s total, converged with zero overuse. Thresholds = estimated × 1.50 headroom for safety.",
|
||
"converged": true,
|
||
"iterations_max": 30,
|
||
"total_time_s_max": 90,
|
||
"iter_avg_time_s_max": 5.0,
|
||
"iter_1_time_s_max": 15.0,
|
||
"overuse_final_max": 0,
|
||
"tracks_delta_min": 100,
|
||
"vias_delta_min": 50,
|
||
"barrel_conflicts_max": 100
|
||
},
|
||
|
||
"cpu": {
|
||
"_source": "CPU-only smoke baseline — to be measured",
|
||
"_note": "Run: pytest tests/regression/test_smoke.py -v (with CPU-only mode if available)",
|
||
"converged": true,
|
||
"iterations_max": 40,
|
||
"total_time_s_max": 180,
|
||
"iter_avg_time_s_max": 10.0,
|
||
"iter_1_time_s_max": 30.0,
|
||
"overuse_final_max": 0,
|
||
"tracks_delta_min": 100,
|
||
"vias_delta_min": 50,
|
||
"barrel_conflicts_max": 150
|
||
},
|
||
|
||
"_thresholds_note": "All *_max/*_min values are soft warnings unless noted HARD FAIL. Tests auto-detect GPU=YES/NO from log. Update these values after running actual smoke test baselines.",
|
||
"iterations_max": 30,
|
||
"total_time_s_max": 90,
|
||
"iter_avg_time_s_max": 5.0,
|
||
"iter_1_time_s_max": 15.0,
|
||
"overuse_final_max": 0,
|
||
"tracks_delta_min": 100,
|
||
"vias_delta_min": 50,
|
||
"barrel_conflicts_max": 100,
|
||
|
||
"_update_instructions": "To update with actual baselines: 1) Run smoke test with ORTHO_DEBUG=1, 2) Parse logs/latest.log with scripts/analyze_log.py --json, 3) Set thresholds to actual_value × 1.50 for headroom, 4) Update this file, 5) Re-run scripts/optimize_and_validate.ps1 --compare to validate"
|
||
}
|