Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Better Support for Modular Typechecking #8

Open
dz333 opened this issue Nov 7, 2019 · 0 comments
Open

Better Support for Modular Typechecking #8

dz333 opened this issue Nov 7, 2019 · 0 comments
Labels
enhancement New feature or request

Comments

@dz333
Copy link
Collaborator

dz333 commented Nov 7, 2019

Currently, when typechecking dependent labels we rely on inspecting conditional checks to generate z3 constraints to prove data flows are safe.

However, sometimes these invariants are established in a different firrtl Module
For example, if Module B requires an invariant established by Module A, then we cannot modularly typecheck Module B. We need to elaborate the entire circuit which contains both of these modules and typecheck that.

This can lead to performance problems with the compiler since larger circuits generate more complicated z3 constraints; they also can lead to inefficient in memory representations of the circuit. By modularizing, we can improve performance by presenting simpler constraints to the solver and reducing the compiler's memory requirements.

One way to establish this would be to add preconditions and postconditions to modules which specify relationships about the modules inputs and outputs, respectively. Furthermore, we could add inference to the compiler which generates weakest preconditions and strongest postconditions for you.

@dz333 dz333 added the enhancement New feature or request label Nov 7, 2019
@dz333 dz333 mentioned this issue Nov 7, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant