[chiselsim] Add, use HasSimulator type class #4678
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.
Add a new type class,
HasSimulator
, which provides a method to get asimulator. Provide two implementations: one for Verilator and one for
VCS. Additionally, provide a low-priority default that maps to Verilator.
This is working towards refactoring Chiselsim to improve the
customizability of its APIs while not dramatically changing how a user
interacts with it. Additionally, this is trying to work towards providing
Scalatest-specific implementations of
HasSimulator
which allow thesimulator to be chosen on the command line. Much of the code for this is
currently sequestered in either ChiselSpec (part of the tests which are
not published) or in internal code.
Refactor the Chiselsim's
DefaultSimulator
to no longer create aninstance of a private Verilator simulator class. Instead, use what is
provided by a
HasSimulator
type class implementation.This is done to slim down
DefaultSimulator
(and transitivelyEphemeralSimulator
) to essentially nothing other than objects thatdefine convenience APIs for running simulation like the existing
simulate
method.Release Notes
HasSimulator
type class to Chiselsim. This allows for customization of the simulator used byDefaultSimulator
.