[chiselsim] Add Default (non-Ephemeral) Simulator #4665
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 simulator, DefaultSimulator, to Chiselsim. This fills a major, long-standing hole in this API by adding a simulator that does not delete all the files that it creates after a test runs.
This uses a type class,
HasTestingDirectory
, to allow for control over where the directory is created. A default implementation is provided which uses a nanosecond resolution timestamp to differentiate the tests. E.g., example output from running the new test included in this commit multiple times is:Note: a Scalatest-based type class implementation is intentionally not provided as part of this PR. This will be provided in a follow-on in such a way that Chiselsim does not inherit a dependency on Scalatest. Ideally, users of Scalatest will use the future Scalatest-based type class implementation to get a subdirectory which is not a timestamp, but derived from the name of that part of the test. I.e., a directory like:
Release Notes
Add
DefaultSimulator
to Chiselsim to provide a simulator which doesn't delete its build directory. This fills a long-standing hole where only theEphemeralSimulator
was provided which will delete the build directory. The current directory structure is timestamp-based.