Closed Roenski closed 2 months ago
@mkosunen any comments or suggestions?
Here's my two cents.
In any cade, those (visibility-speed) trade-off option should be defined in redefinable option (@property)
Interactive simulations are for debugging, so defaulting to slowest, max-visibility is justified. This could be messaged with an info.
There could be 'preset library dictionary' per simulator for some elementary trafe-offs, like nothing visible, only top-level visible top-level+dut visible (if possible), and everything visible.
@mkosunen can you check the pull request linked above? I tested it with A-Core.
I believe the concept of optimizing a design does not exist in a lot of simulators, that's why I made it a questa-specific property.
Currently the situation is as follows:
-novopt
option, and there is no way to override it-voptargs=+acc
option, which optimizes the design while maintaining visibility to all internal signals.Some notes:
-voptargs=+acc
makes the simulation almost as slow as with-novopt
voptargs
. For example, to keep all top level signals, you can have-voptargs="+acc=bcglnprst+ModuleName"
. Having all top level signals still creates a massive performance boost to simulations (we are talking stuff like 100x speed increase).It would be nice if the following features were possible:
Some suggestions as to how to implement it:
vlogsimargs
defined insv
class, and let the user define them manually.optimize
toquestasim
class. Here, you could, for example, provide the function with a list of modules whose signals you wish to keep.The problem that occurs to me is how to add the default vopt behavior if the user does not want to define it manually? Here I explore the problem for the two suggestions introduced above:
vlogsimargs
is empty, then use default values? The problem becomes if the user defines a non-vopt-related argument, then it could change the vopt behavior even if the user did not specifically change it.optimize
function was not called, then we use the default behavior. However, problem arises if the user adds those functions manually tovlogsimargs
then the behavior might be weird.