[RTG] Add Random Test Generation dialect #7833
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.
Please refer to the
RTG.md
file for the rationale.While CIRCT has a strong set of dialects to generate hardware from various source languages, produce SV, simulate, formally verify, and even synthesize, it lacks tools for system-level verification. This dialect aims to address this by introducing an infrastructure to represent and compile randomized tests. These tests can be ISA instruction sequences to test CPUs, transaction sequences to test modules with a ready-valid interface, etc. A later PR will add another dialect (a test dialect) to demonstrate and test this infrastructure for ISA instruction sequences.
This dialect is different from all the other dialects in CIRCT in that it isn't part of a compilation pipeline from a hardware description. Instead, it is used to write/generate tests for the hardware produced by the other dialects in CIRCT and is thus more disconnected from them. Therefore, we might want to restructure CIRCT a bit to introduce top-level projects like the LLVM repo. However, let's wait and see what happens with the upstream restructuring efforts.