Allegro SKILL Tutorial | Forms



1) Is it necessary to include axlCmdRegister at the beginning of .il file

- Yes, if you wish the functions and procedures to be available as commands.

3) How can I select a single pin or via by name.
- See axlSingleSelectName. The example is wrong that with this
command you do not need to clear the select set (axlClearSelSet)
To select a pin by name do:
axlSetFindFilter(
axlSingleSelectName("REFDES" list("U1.1"))
or to select two
axlSingleSelectName("REFDES" list("U1.1 U2.1"))
then
result = axlGetSelSet()

The docuementation is also in error when stating that you can select PINs or VIAs using xy locations as strings.

4) How do I select an object without making it visible.
- Select by name (see above) or it selecting by coordinate use
the "invisible" keyword in setting the find filter.
Example: (select any text)
axlSetFindFilter( ?enabled (list "noall" "invisible" "text")
?onButtons (list "text"))

5) Why does axlSingleSelectPoint sometimes return different results for the same xy location?

- If there were two vias near the xy location, the first axlSingleSelectPoint would select one of them. If you did a second axlSingleSelectPoint without doing an axlClearSelSet in between, the other via would be selected. This is because axlSingleSelectPoint has a bias against already selected objects. It won't reselect an already selected object if there is a nonselected object nearby. The corresponding DFII Hi interface has the same sort of bias. If two axlSingleSelectPoint calls are required, one might insert an axlClearSelSet in between them in order to get the same selection each time. I don't see why two axlSingleSelectPoint calls are needed, however. axlSingleSelectPoint can select any pin/via that has a rectangular extent that intersects with an imaginary box which is centered at the specified xy location. The box size is approximately the size of the cursor which in drawing units is dependant upon the zoom ratio.

To remove the effect of the current drawing zoom ratio, use
axlSingleSelectBox instead of axlSingleSelectPoint: axlSingleSelectBox((list xyval xyval))

This might select more than one pin/via, however.

It might also be desireable to test if the pin/via location is close enough to the xyval. The following would test if the points were equal.

 
	
	    foreach( dbid axlGetSelSet()
		when( nequal(xyval dbid->xy)
		    axlSubSelectObject(dbid)
		)
	    )
	    goodSelections = axlGetSelSet()
		
		


6) Why do I still select an object when I am not close to it? - If the object has attached text and it is visible, you will select the object if the you provide a x:y coordinate within the bounding box of the text.
- If you use the INVISIBLE option the object can also be selected providing a coordinate within the bounding box of the text even if it is invisible.

7) What may be the parent of axlDBCreateLine?

axlDBCreateLine's parent may only be nil (design), a symbol instance or symbol definition. All other parents are illegal.

8) How do I access the JEDAC_TYPE?

The JEDAC_TYPE is part of a function (via the physical parts tables) that is used generate the package name. As such the allegro database does not maintain the JEDAC_TYPE for a package, it just maintains the end result of the function which is the package name.