-
Notifications
You must be signed in to change notification settings - Fork 57
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
AlertLogPkg: Add Affirmation Count to each ID when ReportAlerts is called #45
Comments
Hi Richard, With that said, how would you activate it for a test that passes? Jim |
I currently just call ReportAlerts at the end of a test. On a failure, ReportAlerts is called from within the AlertLogPackage (which links back to the Issue I raised about Mirroring of Alerts) Could you not just print the same table as above? Maybe replacing the failures/errors/warnings columns with Affirmations? Maybe you could set each alert ID to fail on a Vacuous Pass also? |
Current plan is that the affirm counts track calls to AffirmIF, ...., AffirmPassed, AffirmError only. This means with Level PASSED is not counted as an implicit affirmation - note there is an AffirmPassed. Certainly we never count Alert with any level - since it does not imply an self-check was done - Alert is also used with parameter and protocol checking - which are not self-checking. |
We have a similar feature to print Affirms in the report table as @SkydiverTricky requests. But it's fine that such a feature will be available in OSVVM master, so I could remove my additions/changes and use the OSVVM original ones. So @JimLewis thanks for integrating this. 😃 |
What I have currently implemented in the DEV release counts affirmations. That is not exactly the same as a PASSED count. I think a PASSED count may be better than an affirmation count as it is more clear as what is actually done. My concern is that if an error is disabled (SetAlertEnable(..., ERROR, FALSE) and disabled errors are ignored, the affirmation count may give the false sense of passing when it is not. I could derive PASSED count, PASSED = AFFIRMATION - AlertCount - DisabledAlertCount (although this assumes no Alerts were done at this level) or I could just count it (which is more clear, but would also count log("...", PASSED) - which is ok but could make the PASSED count exceed the Affirmation count. |
My Main motivation for this also ties in with the vacuous pass failures. In a system where you have more than one AlertID for doing the checks, you would usually assume they would all expect to do some checks. Giving an affirmation count per AlertID gives the user a quick visual check that things were happening as expected. If one ID got 0 checks that should be some sort of flag to the user that something isnt right with the test. In addition, in most of my testbenches I have a lot of AlertIds, most of which wont actually do any affirmations during the test - they are there simply to throw ERRORS/FAILUREs in certain conditions - while each of the AXI4L checkers above is connected to a scoreboard, I doubt they actually get used all that much - they are already there as part of my AXI verification IP (far more useful in Full AXI4) So along with affirmation count - it might be useful to also report a minimum number of affirmations expected per ID. |
When I add Passed, I am thinking of something like the following. Should have this in testing shortly. WRT #44, I think counts should be based on the number of Passed.
|
Question: Should the word Affirmation be changed to Checks in the above report? Affirmation means something to me as a coder as it is what we call the checkers, however, in a review, checks might be more clear |
Mhm, what does Affirmations mean in this table? The sum of Failures, Errors, Warnings & passes for an Alert / Affirm? So the count of how often an Alert / Affirm was called in a simulation run? |
I think so. If I wanted to avoid a vacous pass, then 0 passes should result in an error (or maybe a warning or a failure). But consider that a user may allow a warning as a test pass. So 1 warning and 0 Passes would still be Pass without being vaccuous. |
Affirmation Count = call affirmation and Error + call log with PASSED This means if someone calls either Affirmation and it passes or calls Log PASSED, then it counts it. Alternately calls to log PASSED could be uncounted, but this seems like it would arise to some confusion. |
Small update to the above printing. In the first line, it currently says Affirmations Checked rather than just Affirmations. As I mentioned in my "question", I suspect both should be changed to "Checks". |
released in 2020.05 |
In a testbench with multiple checkers at different levels of heirarchy, it would be nice to see the AffirmCount per ID (if possible). I note you currently cannot fetch the Affirmation count per ID, only the total,
getAffirmCount
has no arguments, although affirmations are done per ID (also, it appears affirmations are not stored per ID).For example, my current testbench has the following Heirarchy:
It would be nice to see who was doing all the checking.
Thanks
Richard
The text was updated successfully, but these errors were encountered: