Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Pipeline] Extend Pipeline Dialect's pipeline-schedule-linear pass to support more types of scheduling problems #8209

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

bubblepipe42
Copy link
Contributor

@bubblepipe42 bubblepipe42 commented Feb 8, 2025

CIRCT’s static scheduling infra defines 6 different types of problems:

  • Problem: A basic, acyclic problem at the root of the problem hierarchy. Operations are linked to operator types, which have integer latencies. The solution comprises integer start times adhering to the precedence constraints implied by the dependences.
  • CyclicProblem: Cyclic extension of Problem. Its solution solution can be used to construct a pipelined datapath with a fixed, integer initiation interval, in which the execution of multiple iterations/samples/etc. may overlap. Operator types are assumed to be fully pipelined.
  • SharedOperatorsProblem: A resource-constrained scheduling problem that corresponds to multiplexing multiple operations onto a pre-allocated number of fully pipelined operator instances.
  • ModuloProblem: Models an HLS classic: Pipeline scheduling with limited resources.
  • ChainingProblem: Extends Problem to consider the accumulation of physical propagation delays on combinational paths along SSA dependences.
  • ChainingCyclicProblem: Extends ChainingProblem and CyclicProblem to consider the accumulation of physical propagation delays on combinational paths along SSA dependences on a cyclic scheduling problem. Note that the problem does not model propagation delays along inter-iteration dependences. These are commonly represented as auxiliary dependences, which are already excluded in the parent ChainingProblem. In addition, the ChainingCyclicProblem explicitly prohibits the use of def-use dependences with a non-zero distance.

Currently, the *pipeline-schedule-linear* pass from the pipeline dialect only supports the base Problem type. This PR extents this pass to support all currently avabilaible scheduling problems.

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