Thank you. Yes, all the pdks i have seen (from 2um down to 22nm processes) start with clear rules and naming conventions and end up with lot of exceptions. Reason is probably kind of 'msdos' effect, initial rules do not scale when needed. For example after defining 'strength 1' someone needs half strength. ALso there are ambiguities. Inverted combinatorial outputs are named 'Y' while non-inverted outputs are named 'X'. Not clear what to do with Xor-type gates 🙂 , the only reliable way to determine the output name is to look at the gates (XNOR2->Y, XNOR3->X, XOR2->X, XOR3->X).
gates have 'A' and 'B' inverted inputs, while
gates have 'C' and 'D' inverted inputs. Any algorithm that tries to cope with all these exceptions is no simpler than scanning one by one all cell directories.