mirror of https://github.com/llvm/circt.git
![]() * [Pipeline] Add cross-block canonicalization break op In participation of the upcoming removal of the cross-block canonicalization guards in the `comb` canonicalizers, we're introducing a `pipeline.src` operation to the pipeline dialect. This operation is intended to alleviate the case of unintentional cross-block canonicalizations when a scheduled pipeline has not yet had its registers materialized. This operation, `pipeline.src`, effectively acts as a canonicalization boundary, creating an in-block reference to a value that is defined in a predecessor block. This means that we can keep our existing structure for unmaterialized, scheduled pipelines - values can be referenced from _any_ predecessor op through the `pipeline.src` operation, which still allows for said values to be easily moved across stages in a retiming scenario. Upon register materialization, these `pipeline.src` operations are trivially removed, effectively becoming the block arguments of the pipeline stages. * scheduling * extra test * some docs * integration tests * Review --------- Co-authored-by: Morten Borup Petersen <mpetersen@microsoft.com> |
||
---|---|---|
.. | ||
AIG | ||
Arc | ||
Calyx | ||
Comb | ||
DC | ||
Debug | ||
ESI | ||
Emit | ||
FIRRTL | ||
FSM | ||
HW | ||
HWArith | ||
Handshake | ||
Interop | ||
Kanagawa | ||
LLHD | ||
LTL | ||
LoopSchedule | ||
MSFT | ||
Moore | ||
OM | ||
Pipeline | ||
RTG | ||
RTGTest | ||
SSP | ||
SV | ||
Seq | ||
Sim | ||
SystemC | ||
Verif | ||
CMakeLists.txt |