Skip to content

Refactor XLS schedulers to use a common interface and allow for selecting scheduler for minimization workloads. - #4206

Merged
copybara-service[bot] merged 1 commit into
mainfrom
test_910927564
May 22, 2026
Merged

copybara-service[bot] merged 1 commit into
mainfrom
test_910927564

Conversation

@copybara-service

@copybara-service copybara-service Bot commented May 6, 2026 •

Copy link
Copy Markdown

Refactor XLS schedulers to use a common interface and allow for selecting scheduler for minimization workloads.

This change introduces a Scheduler abstract base class, and refactors ASAP, MinCut, and SDC scheduling algorithms to implement this interface. A new RandomScheduler is also added. The run_pipeline_schedule utility is updated to use this new interface. Additionally, a new option and flag --find_bounds_strategy are added, allowing a different scheduler (defaulting to the selected scheduling algorithm usually SDC) to be used for finding minimum clock period and worst-case throughput bounds, which can be faster than using the main scheduling strategy. Error handling in run_pipeline_schedule is also improved.

The 'random' scheduler is also updated to make use of the ASAP scheduler bounds to do a much better job at consistently choosing allowable schedules.

The previous run_pipeline_scheduleing had a number of subtle bugs around how its configuration was interpreted that have all been fixed up, requiring some changes to tests which relied on the previous behavior.

Testing is improved to check schedulers other than SDC. Many tests needed to be tweaked to account for the different ways these schedulers work.

@copybara-service
copybara-service Bot force-pushed the test_910927564 branch 4 times, most recently from 4e8faaa to 7848f6d Compare May 22, 2026 18:23
…ting scheduler for minimization workloads.

This change introduces a `Scheduler` abstract base class, and refactors `ASAP`, `MinCut`, and `SDC` scheduling algorithms to implement this interface. A new `RandomScheduler` is also added. The `run_pipeline_schedule` utility is updated to use this new interface. Additionally, a new option and flag `--find_bounds_strategy` are added, allowing a different scheduler (defaulting to the selected scheduling algorithm usually SDC) to be used for finding minimum clock period and worst-case throughput bounds, which can be faster than using the main scheduling strategy. Error handling in `run_pipeline_schedule` is also improved.

The 'random' scheduler is also updated to make use of the ASAP scheduler bounds to do a much better job at consistently choosing allowable schedules.

The previous run_pipeline_scheduleing had a number of subtle bugs around how its configuration was interpreted that have all been fixed up, requiring some changes to tests which relied on the previous behavior.

Testing is improved to check schedulers other than SDC. Many tests needed to be tweaked to account for the different ways these schedulers work.

PiperOrigin-RevId: 919831115
@copybara-service
copybara-service Bot merged commit 8560878 into main May 22, 2026
@copybara-service
copybara-service Bot deleted the test_910927564 branch May 22, 2026 20:26

This branch was previously deployed

1 inactive deployment
github-pages — 85608789 Deployed May 22, 2026 by copybara-service[bot] via deploy #10091
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.

1 participant