The problem is this. The netlist extractor has to extract a device first before it can figure out that it's unused. Since an unused device is already extracted, it is wasteful to remove it in the circuit extraction stage, when that's going to be done in the comparison stage anyway (when requested).
If you want to see how Calibre views the layout netlist after all transformations occur (including device filtering), place this statement into your LVS comparison rule file:
LVS WRITE LAYOUT NETLIST <file>
Thanks for the reply.
So there is no way of doing that in a Calibre ruleset because of the reason you metioned below?
If yes, then I guess a Perl script to edit the netlist is the only thing I can think of
In Calibre, the netlist extractor is designed to show the topology of everything that exists in the layout. It is the role of a client application (like LVS) to interpret the layout netlist (using unused device filtering if necessary) to accomplish what the client application needs to do. Put another way, there is no benefit in a Calibre flow for the netlist extractor to do things like device filtering or reduction, because that job is done by other applications.
The way to do what you want in Calibre is to run LVS with the statement I suggested previously. If you don’t have a source netlist, run LVS with the layout against itself with unused device filtering on.