Reply To: Problems? Suggestions?
In VHDL, the logical library name “work” is special. It actually refers to the current working library (aka: the library into which this design unit is compiled).
As a result, if the packages SortListPkg_int, RandomBasePkg, RandomPkg, and CoveragePkg are all compiled into the osvvm library, then CoveragePkg may reference RandomPkg as being in either library work or osvvm. Both are correct.
On the other hand, your programs that are not compiled into the osvvm library will need to reference the packages as being in the osvvm library.
As we move toward tools including a precompiled osvvm library, this is important. When I am testing out release candidates, I need to be able to compile the packages into my own private library that does not corrupt the tool build. Since they reference each other as being in work, the language allows me to put them in a different library name for development. The only thing that needs to know this different library name is my testbenches. Then when I release them, they are all set to be put into the osvvm library.
P.S. If your training vendor is not teaching you this, you should consider a class from SynthWorks (https://www.synthworks.com)