Skip to content

vendor_simulate logic for debug flag is not ideal #61

@dbee-lumacron

Description

@dbee-lumacron

I was very impressed when using the generic on RunTest that I could set a generic that was not on a top-level entity. However, I was dismayed to find out that it didn't work when I tried to run in CLI/batch mode. I figured that it may be because I only SetInteractiveMode when I'm in GUI mode, so I tried SetDebug prior to runTest for by batch run. However, this had no effect when I re-ran.

After doing some digging, I can see that Debug is ignored if we've got NoGui. In at least Questasim's case, the +acc flag gives design visibility that was allowing me to set generics that were not top level.

if {($::osvvm::NoGui) || !($::osvvm::Debug)} {

I also suspect that if I had external aliases set up to dive deep into the hierarchy, I might need debug visibility (I haven't tried).

I believe this user experience can be improved, it's not ideal to have an explicit setting (SetDebug) ignored, resulting in behaviour mismatch between GUI runs and batch runs.

I accept that a reasonable default for Debug is false for NoGui, but I believe that is already the default. I don't see what the gain is to enforce a check for NoGui at the vendor simulate stage.

If I've told the simulator to have debug visibility via SetDebug, I don't think OSVVM should disallow this.

If we really want the default behaviour to ignore Debug if NoGui, then we should add user feedback / warnings / errors when they try to SetDebug.

However, I think we should instead change the default behaviour to respect the Debug flag, regardless of GUI mode. We should then give a warning when NoGui, indicating that simulation will be slower and take up more memory etc.

I have a simple workaround to just wire that generic up to lop level. Perhaps I could also manually provide the +acc option as an argument.

P.S. the PDF documentation for RunTest was out of date and didn't mention that I can give [generic ] as an option.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions