Refactor panama binding and converter framwork #3754
Merged
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.
This PR contains API modifications, but won't affect normal users.
In my original design, I thought the binding framework was trivial, and we may maintain other converter like
JNAConverter
orJNIConveter
, however after 3 months work, I realize I was too native, I don't think it's valuable to devote another intern or master student to work on another implementation. So I removed those abstract deceleration from the main chisel project, to remove the dependency from OM to chiesl.After this refactor, there are 4 modules to be traced:
circtpanamabinding
is theJavaModule
store all CIRCT C-APIpanamalib
is theScalaModule
maintaining a internal Scala API for all panama dependencies.panamaom
is the standaloneOMEvaulator
, which can be used for parsingmlirbc
and providing a Scala API to access all Property generated from Chisel. It won't depend onchisel
.panamaconverter
is theConverter
which directly visit the internalChiselIR
, and creating inmemory-MLIRBlock
. It is subject to replace the current firrtl serializer in chisel in the future chisel versions. But we may continue maintaining them together in a relative long time.Contributor Checklist
docs/src
?Type of Improvement
Desired Merge Strategy
Release Notes
Reviewer Checklist (only modified by reviewer)
3.5.x
,3.6.x
, or5.x
depending on impact, API modification or big change:6.0
)?Enable auto-merge (squash)
, clean up the commit message, and label withPlease Merge
.Create a merge commit
.