<> <> <> 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.ROPE_NIL] 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