[LTL] Make ltl.delay support optional clocking#9869
[LTL] Make ltl.delay support optional clocking#9869
Conversation
c25092b to
2312c9d
Compare
|
@uenoku cc |
2312c9d to
68773b2
Compare
uenoku
left a comment
There was a problem hiding this comment.
Probably we should add an operation instead of adding optional operand because we could break existing delay op's semantics.
Ok, this way seems better, i will change the RFC first and then redo this pr's commits. |
- Move ClockEdgeAttr and ClockOp definitions before the Sequences section so they can be referenced by sequence operations. - Add new ClockedDelayOp for explicitly clocked delays with mandatory clock and edge parameters. Syntax: clocked_delay clock, edge, input, delay[, length]. - Simplify DelayOp to be purely unclocked (remove implicit clock support). - Add ClockedDelayOp to LTL Visitor TypeSwitch for downstream consumers. - Update DelayOp documentation to clarify unclocked semantics.
206be23 to
8495815
Compare
|
@uenoku cc |
- Add SameClockAndEdge constraint for matching clocked delay pairs. - Add NestedClockedDelays pattern: merge nested clocked delays with same clock/edge into a single delay. - Add MoveClockedDelayIntoConcat pattern for canonicalization. - Add MergeNestedClockedDelays C++ canonicalization pattern. - Use shared foldDelayLike<> template for both DelayOp and ClockedDelayOp.
- Document ClockedDelayOp syntax, semantics, and examples in LTL.md. - Update DelayOp docs to clarify purely unclocked semantics. - Add ClockedDelayOp roundtrip tests to basic.mlir. - Update canonicalization.mlir for ClockedDelayOp fold patterns.
|
@fabianschuiki cc pls 👀 |
|
I'm curious as to why this is totally necessary, won't this create semantic issues when paired with assert-property style things (so lowerings that yield |
The initial issue came from #8673, and its main purpose was to ensure that IR (In-Relational Analysis) had clear semantic relationships when analyzing clocks.
Good question. The current In the follow-up PR (PR2: InferLTLClocks),
That said, you're right that |
This PR is the first step of the explicit-delay stack.
Create a new operation of
ltl.clocked_delayExample:
This pr is participated with @Claude-opus-4.6 and reviewed by myself