CDFeatureCheckDoc.tioga
Jacobi, March 28, 1986 1:56:36 pm PST
Jacobi, March 28, 1986 3:59:51 pm PST
Feature Checking
Start the program:
Run a commandfile for setting up the parameters. There are many such commandfiles.
Use the program menu to invoke the check on the current parameters set up from the commandfile.
This tool allows the user to check whether certain features are used or not. It can be used as a mean for subclassing technologies.
A typical usage of the feature checker may be to check whether a design contains any rectangle of layer buried, whether a design contains any buried contacts or whether a design makes use of arbitrary angled polygons...
The feature checker gets its inputs from a RefTab, containing all the allowed feaures to be used. For the interactive command this reftab is found as property of an atom. It is thought that users can make up their own RefTab's to parametrize the feature checker for their particular needs.
A parameter RefTab must not be changed once it has been passed to the feature checker. If a new set of rules should be used, you must make a new RefTab. This is particulary important because the feature checker caches objects already checked; after changing a RefTab, already checked objects will not be analized any more and errors based on new criteria will not be found.
The client gives the feature checking program the right to store additional information into the RefTab.
Keys for the RefTab:
$CDFeatureCheckKey  
value: key for property registration and caching; NIL makes the program inventing a new key (and optional storing it into the RefTab).
$CDFeatureCheckName  
value: Rope to be written out. This rope is necessary to give the user feedback which parametrization is used.
$CDFeatureCheckOthers  
value: Special behaviour when object class is not registered.
ATOM (other then mentioned above)  
Defines behaviour when object of this class (class.objectType) is found. Does all the checks denoted by the value; if any check denotes an error, the object is not supposed to be used in the restricted feature set.
types for value:
LIST OF ATOM  Checks each element of list
LIST OF REF ANY  Checks each element of list
Rope.ROPE  Error message
ATOM  layer match is required
  if the atom=CD.LayerKey[..] the layers do match
$T   The object (layer) is accepted
REF CD.Rect InterestSize required to be in the range of the rectangle
REF PROC [ob: CD.Object] RETURNS [msg: Rope.ROPENIL]
  Proc is called; msg is an error message if not nil
NIL  depending whether the object class is a compound or atomic:
  (class.inDirectory)
  TRUE: the object will be expanded to a cell and its children analized
  FALSE: Checks whether there is a special behavior for non registered
   classes, otherwise an error message is made