I have some skill code which goes through different cellviews and looks for unbound instances.
;; code to iterate over cells
;; code to interate over views
;; iterate over instances
when( ! i->master printf( "Instance %s (%s:%s.%s) is unbound (master does not exist)\n" i->name i->libName i->cellName i->viewName ) ))
what I have noticed is that I have some "functional" views in the library that have a structural verilog netlit. Those trigger complaints but what I am wondering is how i->libName is set in this case. As an example, the verilog file has a line:
INVX4 I20 (.Y(out), .A(in));
This triggers a message from the skill code
Instance I20 (stdcellLib:INVX4.symbol) is unbound (master does not exist)
so where did the standard cell library name, "stdcellLib", get set? It isn't there in the verilog netlist and when I query the cellview, cell, or library properties in the library manager, I don't see "stdcellLib" set anywhere at all.
So somewhere there must be some sort of library search path but I can't see it.
I shoudl also mention that "stdcellLib" was correct at one point but is not correct anymore.
Maybe you can add additional line to check fof cellViewType, before checking the instance's master.
In reply to kb how:
It will try to find the cell in the same library, then (I think) in the libraries in the order of the cds.lib. But I can't remember 100% - and the mechanism is different between IC5141 and IC61X. In IC5141 the database supported a "soft" library binding where the library was determined later, where as OpenAccess doesn't have such a loose binding.
That said, with textual views, the library is resolved later for actual simulation. If you use a config view for (say) AMS simulation, you specify the "library list" which specifies the search order for libraries to handle Verilog language code since Verilog doesn't have the concept of libraries.