P
PolyPusher
Guest
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 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