In reply to chr_sue:
OK, hopefully this will clarify what I’m saying:
“driver” in the top-level testbench module is a module/interface. not a class instance.
“driver” in the top-level testbench environment is a class instance.
The two talk via multiple methods.
I’m using UVMF if that helps any. I’ve seen some very ‘interesting’ code out there, so I’m sure if it’s possible, someone somewhere has implemented it.
I have to be realistic: EDA vendors are businesses, and they’re going to address first issues with the features most commonly used. So combinations of language constructs (like bind+force) that are not typically done, might not generate the same results across vendors. Either because it simply wasn’t tested by each vendor, or because it’s a corner case, the LRM is ambiguous.
I ran into several of those when transitioning at one company from one EDA vendor’s simulator to another, and I know people at other companies who have had the same problems.
I practice defensive-programming when developing architectures. Of course, there are other people who are braver than I.