Hi all, I am trying to write code that creates a list of pins on masters that do not match schematic. I have found it to work sometimes. Basically, If I change a name of a pin on a master it catches that everytime. If a pin is missing, it doesn't always catch it. I can delete a pin in a master(made sure all pins are missing for the net) and run the code(at the parent"top") and it doesn't catch the missing pin. Do the same thing on another instance and the code catches the missing pin. I don't think it is my code since I can take the one master that my code doesn't catch a missing pin and run the below code and it isn't caught that way either. It seems to me if the pin on a master is deleted and you go back to the parent the pin information would be gone, but that is not what I am seeing. I tried to update components and nets, this doesn't change the results. Also, running connectivity-->check-->against source doesn't catch the missing master pin. Any ideas why? Looks like I might have to write a script that checks for pins at the master level using the schematic list of pins as a "gold" list. yuk. geGetSelectedSet(geGetEditCellView())~>master~>terminals~>name Thank you in advance for any help, Poly Pusher procedure(EFFloatingPins() ;==========floating pins routine ;==========flag master if the pins do not match schematic let((EFSelectionFilterSchWindow EFSchInstList EFSchInstance EFLayInstList EFSchTraceDiff EFLayInstance EFGoldInst EFNetsBox EFTermsOrNet EFInstanceVar FInstance EFCellname EFTerm EFNet EFInstanceX EFInstanceXvar EFSchTrace EFLayInstance EFLayCellname EFLayTerm) ;==========Create "Gold List" list of instances in schematic added pipe symbol hiSetCurrentWindow(window(EFSelectionFilterSchWindow)) cvSch=geGetEditCellView() EFSchInstList=nil when(cvSch foreach( inst cvSch~>instances if(inst~>master then EFSchInstance=inst~>name EFSchInstList=append(EFSchInstList list(strcat("|" EFSchInstance))) );if );foreach );when hiSetCurrentWindow(window(EFSelectionFilterLayWindow)) cvLay=geGetEditCellView() EFLayInstList=nil when(cvLay foreach( inst cvLay~>instances if(inst~>master then EFLayInstance=inst~>name EFLayInstList=append(EFLayInstList list(EFLayInstance)) );if );foreach );when EFSchTraceList=nil EFLayTraceList=nil EFSchTrace=nil foreach(mapc EFGoldInst EFSchInstList EFGoldInstX=nil EFGoldInstX=append(EFGoldInstX list(EFGoldInst)) if(setof(x EFGoldInstX member(x EFLayInstList)) then; get lay trace and sch trace for instance when(cvLay foreach( inst cvLay~>instances if(inst~>master then EFLayInstance=inst~>name EFLayCellname=inst~>master~>cellName );if foreach( instTerm inst~>master~>terminals EFLayTerm=instTerm~>name if(EFGoldInst==EFLayInstance then EFLayTraceList=append(EFLayTraceList list(strcat(EFLayInstance ":" EFLayCellname ":" EFLayTerm ))) );if );foreach );foreach );when when(cvSch foreach( inst cvSch~>instances EFInstance=inst~>name EFCellname=inst~>master~>cellName foreach( instTerm inst~>instTerms EFTerm=instTerm~>name EFNet=instTerm~>net~>name ;====add a | to EFInstance EFInstanceX=nil EFInstanceX=append(EFInstanceX list(strcat("|" EFInstance))) EFInstanceXVar=car(EFInstanceX) if(EFGoldInst==EFInstanceXVar then EFSchTraceList=append(EFSchTraceList list(strcat(EFInstanceXVar ":" EFCellname ":" EFTerm))) );if );foreach );foreach );when );if );foreach EFdiffList=nil EFdiffList = setof(x EFSchTraceList !member(x EFLayTraceList));Pin is in Schematic Not layout EFdiffList2=nil EFdiffList2 = setof(x EFLayTraceList !member(x EFSchTraceList));Pin is in Layout Not Schematic EFNoMatchSchList=nil EFNoMatchLayList=nil foreach(mapc EFNoMatchSch EFdiffList EFNoMatchSchList=append(EFNoMatchSchList list(strcat (EFNoMatchSch " --> Pin is in Schematic but not Layout"))) );foreach foreach(mapc EFNoMatchLay EFdiffList2 EFNoMatchLayList=append(EFNoMatchLayList list(strcat (EFNoMatchLay " --> Pin is in Layout but not Schematic"))) );foreach );let EFSchematicProbeForm->EFProbeBox->choices=nil EFNoMatchLayList=sort(EFNoMatchLayList nil) EFSchematicProbeForm->EFLayTrace->choices=EFNoMatchLayList EFNoMatchSchList=sort(EFNoMatchSchList nil) EFSchematicProbeForm->EFSchTrace->choices=EFNoMatchSchList );procedure
I'm assuming you are using VLS-XL (you write about update components and nets). Are you trying to create instTerm on instances which have a schematic equivalent but whose schematic equivalent doesn't have an equivalent instTerm? Or are you trying to create instTerm on instances which don't have a schematic equivalent. In the first case, I'd consider puting a net expression on the terminal in the master of the layout instance. VLS-XL will create the instTerm for you, resolving the netexpression in the schematic context. (This is used for instance for bulk terminals on transistors). I'm sorry but I didn't understood your problem. And I haven't the time to check your code to see if I can guess the problem with its help. If you are using 6.1.3, check the bnd* functions (IIRC, they were already in 6.1.2 but I can't get confirmation now). They may help you. Yours,