circt/lib/Dialect
Morten Borup Petersen 4b2c78a13a
[Pipeline] Add cross-block canonicalization break op (#8517)
* [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>
2025-06-02 14:11:09 +02:00
..
AIG [AIG] Add LongestPath Analysis boilerplates, data structure and rational doc (#8505) 2025-05-22 17:24:26 -07:00
Arc [Arc] Fix arc inliner deleting arcs that still have calls (#8510) 2025-05-23 10:09:07 +01:00
Calyx Bump LLVM to c6c2e21028cadef854cf22f6ecaa5eb9d224b76d. (#8467) 2025-05-06 09:07:04 -06:00
Comb [Comb] Fix typo in InferIntRangeInterfaceImpls.cpp; NFC 2025-05-01 11:25:47 -07:00
DC [DC] Add + re-enable canonicalization patterns (#7952) 2024-12-09 19:01:27 +01:00
Debug [Debug] Add debug dialect (#6308) 2023-10-20 09:51:37 -07:00
ESI [ESI][Runtime] Fix path in distributed cmake file 2025-05-21 20:47:02 +00:00
Emit Drop unneeded headers (#8433) 2025-04-22 07:46:35 -07:00
FIRRTL [FIRRTL] LowerLayers: do not emit duplicate bindfile includes (#8521) 2025-05-30 18:51:26 -04:00
FSM Bump LLVM to 289b17635958d986b74683c932df6b1d12f37b70. (#8225) 2025-02-13 14:32:11 -07:00
HW [HW] Add array element injection op (#8504) 2025-05-22 10:59:32 -07:00
HWArith [HW] Use free variants of isa/cast/dyn_cast 2024-04-28 16:41:57 +02:00
Handshake [Handshake] Create unique AppIDs while lowering with ESI wrapper 2025-05-14 00:47:46 +00:00
Interop Bump LLVM (#5825) 2023-08-11 09:40:48 -04:00
Kanagawa Bump LLVM to c6c2e21028cadef854cf22f6ecaa5eb9d224b76d. (#8467) 2025-05-06 09:07:04 -06:00
LLHD [LLHD] Add support for `llhd.sig.array_get` projections to Mem2Reg (#8509) 2025-05-23 13:23:15 -07:00
LTL [LTL] Canonicalize ltl.and to comb.and for i1 properties (#7759) 2024-11-01 09:11:00 -07:00
LoopSchedule Bump LLVM: 2023/09/12 (#6114) 2023-09-12 16:11:24 -07:00
MSFT [NFC][ESI] Move around services code 2024-09-19 16:17:02 -07:00
Moore [ImportVerilog] Fix bugs with constant folding (#8213) 2025-02-10 12:02:29 +00:00
OM [OM] Ensure every sublist is finished in ListConcatOp evaluation. (#8460) 2025-05-01 21:51:43 -06:00
Pipeline [Pipeline] Add cross-block canonicalization break op (#8517) 2025-06-02 14:11:09 +02:00
RTG [RTG] Add any_context attribute (#8373) 2025-05-14 11:13:42 +01:00
RTGTest [RTG][Elaboration] Support folders of pure operations (#8374) 2025-04-28 16:12:25 +02:00
SSP [SSP] Separate `ResourceType` from `OperatorType` (#8444) 2025-05-13 08:52:11 -04:00
SV [LowerToHW] [ExtractTestCode] Remove FD caching to pass ETC (#8428) 2025-04-18 17:34:43 -07:00
Seq [Seq] Remove redundant enable mux in front of compreg.ce (#8477) 2025-05-12 14:55:56 -07:00
Sim [NFC][Sim] Rename "formatting token" to "formatting fragment" 2024-10-31 13:34:56 +01:00
SystemC Bump LLVM to 289b17635958d986b74683c932df6b1d12f37b70. (#8225) 2025-02-13 14:32:11 -07:00
Verif [Verif] Add pass to lower symbolic values (#8422) 2025-04-22 10:47:31 -07:00
CMakeLists.txt [LLVM] integrate upstream SMT (#8408) 2025-04-14 14:34:14 -04:00