 |
|
| Computers Forum Index » Computer - Cadence » master terminals... |
|
Page 1 of 1 |
|
| Author |
Message |
| PolyPusher... |
Posted: Fri Oct 02, 2009 5:30 pm |
|
|
|
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 |
|
|
| Back to top |
|
|
|
| Jean-Marc Bourguet... |
Posted: Tue Oct 06, 2009 5:33 pm |
|
|
|
Guest
|
I'm assuming you are using VLS-XL (you write about update components and
nets).
PolyPusher <eric.d.fitzsimmons at (no spam) gmail.com> writes:
Quote: 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).
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 |
|
|
| Back to top |
|
|
|
|
|
All times are GMT
The time now is Fri Dec 11, 2009 12:34 pm
|
|