Currently there are three concepts we call schedulers:
a hardware module which has an input signal representing a set of requests and an output signal representing which request is granted, eg. amaranth.lib.scheduler.RoundRobin and coreblocks.transactions._utils.Scheduler (a one-hot version of the former).
a mechanism of executing transactions in our transaction framework. Here, multiple transactions (which request execution/whose execution condition is satisfied) can be granted at once. There were proposals to rename these to arbiters (and I have a git branch which implements that).
a middle stage of our processor. I can't find a precedent for this kind of name. It appears that this part is in-order and out-of-order scheduling first appears in the wakeup/select logic, which was apparently placed in the execution stage. I think this also should be named differently.
Currently there are three concepts we call schedulers:
amaranth.lib.scheduler.RoundRobin
andcoreblocks.transactions._utils.Scheduler
(a one-hot version of the former).