chisel
chisel copied to clipboard
Enable more fine-grained customization of svsim Backends
Type of issue: Feature Request
Is your feature request related to a problem? Please describe.
svsim currently makes a "best attempt" to provide the required functionality for recent versions of VCS and Verilator, as it would likely be too much of a maintenance burden to support the full breadth of functionality across multiple versions, especially for VCS which isn't freely available. https://github.com/chipsalliance/chisel/pull/3306 provides an escape hatch where consumers can implement their own backend, but currently that requires copying a large amount of functionality from the existing backends. A better solution would be to make backends more extensible, probably using something like CommandLineArguments as described here: https://github.com/chipsalliance/chisel/issues/3150.
A complete solution would allow common functionality to be defined in svsim, additional functionality (like adding a flag) defined in the consumer's code base, and detection when upstream flags are added to svsim nudging folks to remove custom code.
Describe the solution you'd like
See https://github.com/chipsalliance/chisel/issues/3150 for a description of CommandLineArguments. Something which allows you to add additional arguments to a backend, which detects things like conflict and duplicates would be nice.
What is the use case for implementing this feature? SiFive bumping VCS to a new version which requires a new VCS flag should not require first upstreaming that flag to Chisel.