master terminals

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'm assuming you are using VLS-XL (you write about update components and
nets).

PolyPusher <eric.d.fitzsimmons@gmail.com> writes:

I am trying to write code that creates a list of pins on masters that
do not match schematic.
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).

Any ideas why?
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,

--
Jean-Marc
 

Welcome to EDABoard.com

Sponsor

Back
Top