Although checker declaration is allowed within a module, most of the EDA tools I’ve tried in edaplayground.com fails to elaborate the code above. Some of them passes when bind statement is removed. Is this due to tool flaw or incompliance with the LRM? If so, can someone point me the resources in LRM?
I think the problem is the combination of bind with a checker defined inside a module. Declaration inside module are not visible outside that module except where hierarchical references are allowed, which is not the case here.
Moving the checker declaration outside the module works on 3 of 4 simulators on EDAPlayground. That other simulator doesn’t even recognize checker as a keyword.
I was a big time promoter of this feature during our SVA book writing with @Ajeetha_Kumari_CVC and @ben2 - but was disappointed with simulator support beyond simple uses. I learnt that the “free/rand variable” feature within checker is the key reason why this was added to the language at the first place and that’s mostly for formal tools. I am not sure how many FV tools really support this today - though they all have ways to do “cutpoints” and modeling code without checker.
So, yes I would like to see more and more checker usage - but being pragmatic, tool support is quite behind.
From your perspective I’ve tried to reference via tb.some_checker but still giving an error. Moving the checker outside works as expected. Anyways, I will probably skip using checkers.
Yes, I’ve read your paper about checkers for cache controller as well. That was inspiring, thanks.
I was suprised when I see checker was primarily targeted for formal in LRM.