[Formal][Property Annotation] Annotate Reconvergent-paths using flow variables#716
Draft
Basmet0 wants to merge 33 commits intoEPFL-LAP:mainfrom
Draft
[Formal][Property Annotation] Annotate Reconvergent-paths using flow variables#716Basmet0 wants to merge 33 commits intoEPFL-LAP:mainfrom
Basmet0 wants to merge 33 commits intoEPFL-LAP:mainfrom
Conversation
Jiahui17
reviewed
Jan 27, 2026
experimental/lib/Analysis/FormalPropertyAnnotation/HandshakeAnnotateProperties.cpp
Outdated
Show resolved
Hide resolved
experimental/lib/Analysis/FormalPropertyAnnotation/HandshakeAnnotateProperties.cpp
Outdated
Show resolved
Hide resolved
experimental/lib/Analysis/FormalPropertyAnnotation/HandshakeAnnotateProperties.cpp
Show resolved
Hide resolved
experimental/lib/Analysis/FormalPropertyAnnotation/HandshakeAnnotateProperties.cpp
Outdated
Show resolved
Hide resolved
Comment on lines
+328
to
+332
| // channel metadata | ||
| CPVar i1 = CPVar(llvm::formatv("#x1{0}", getUniqueName(&op)).str(), | ||
| VarType::INTEGER); | ||
| CPVar i2 = CPVar(llvm::formatv("#x2{0}", getUniqueName(&op)).str(), | ||
| VarType::INTEGER); |
Member
There was a problem hiding this comment.
Here we should describe the model that we assume:
every unit is a cascade of: merge/join/mux -(internal_channel1)-> [slot]* -(internal_channel2)-> fork
Rename i1 -> lambda_internal_channel1
experimental/lib/Analysis/FormalPropertyAnnotation/HandshakeAnnotateProperties.cpp
Outdated
Show resolved
Hide resolved
experimental/lib/Analysis/FormalPropertyAnnotation/HandshakeAnnotateProperties.cpp
Show resolved
Hide resolved
| } | ||
|
|
||
| LogicalResult | ||
| HandshakeAnnotatePropertiesPass::annotateReconvergentPathFlow(ModuleOp modOp) { |
Member
There was a problem hiding this comment.
Split this function into multiple smaller ones:
- createFlowVariables
- addEquations
- solveGaussian
- ...
Member
|
We could do a separate PR for class HandshakeOpInternalState |
Jiahui17
reviewed
Feb 4, 2026
experimental/lib/Analysis/FormalPropertyAnnotation/HandshakeAnnotateProperties.cpp
Outdated
Show resolved
Hide resolved
added 13 commits
February 18, 2026 16:03
…e invariant in hopes of allowing nuXmv to prove them with 1-induction
separation of function into smaller steps
properly support latency-induced slots while extracting local equations
328830b to
98ee18d
Compare
added 12 commits
February 20, 2026 18:07
i.e. most operators are blind to +-
flow path annotation using internal states utility functions for constraining internal states
added 8 commits
March 4, 2026 15:29
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Each operation has local properties on how tokens are distributed between inputs and outputs. For example, a join operation expects the same number of tokens coming from each input, and sends them to its output. By extracting all of these local equations from a circuit, and then performing Gaussian elimination, one gets equations that describe properties of paths using only the internal states of the operations, rather than having to keep track of how many tokens are sent across each channel.