[Seq] Add a pass to implement firreg randomization #7606
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 pass performs firreg random initialization for seq.compreg. With this pass we can represent
firreg initialization with compreg so we can eventually deprecate existing FirregLowering. There are still
several differences:
FIRRTL_BEFORE_INITIAL
,FIRRTL_AFTER_INITIAL
This pass has an option to generate the randomization as MLIR core dialects which
make it possible to simulate with arcilator. When
emitSV
is true, the pass generatesa random function call as a macro in the SV dialect. It supports configurable initialization of
registers through macros like
RANDOM
andINIT_RANDOM_PROLOG
. If the option is false,it produces simulatable IR using MLIR core dialects.
eg:
(
RANDOM
must not be placed beforeINIT_RANDOM_PROLOG_
so this is a bug of ExportVerilog)