<!DOCTYPE html
  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<!--
Copyright (c) 2006 UGS Corp.

All Rights Reserved.

This software and related documentation are proprietary to UGS Corp.
-->
<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title>Process</title>
      <script language="javaScript">
        abridged="false";
        displayConditions=new Array();
      </script>
      <link type="text/css" href="../css/main_styles.css" rel="stylesheet">
   </head>
   <body class="bodydocs" onload="top.pageLoader()" bgcolor="#FFFFFF">
      <div class="title_topic2" id="xps10_pagetitle">Process</div>
      <hr noshade="true">
      <table cellspacing="4" align="center">
         <tr valign="top">
            <td bgcolor="#f7f7f7" colspan="1" rowspan="1">
               <p class="para_td"><a class="links" href="javascript:void(0)" onclick="top.openFile('routingadmin/write_overview.html');return(false);">Overview</a></p>
            </td>
            <td bgcolor="#f7f7f7" colspan="1" rowspan="1">
               <p class="para_td">How To</p>
            </td>
            <td bgcolor="#f7f7f7" colspan="1" rowspan="1">
               <p class="para_td"><a class="links" href="javascript:void(0)" onclick="top.openFile('routingadmin/tcl_rules.html');return(false);">Options</a></p>
            </td>
            <td bgcolor="#f7f7f7" colspan="1" rowspan="1">
               <p class="para_td"><a class="links" href="javascript:void(0)" onclick="top.openFile('routingadmin/write_example.html');return(false);">Related Topics</a></p>
            </td>
         </tr>
      </table><br><p class="para_topic">Most design rules follow a simple process:</p>
      <ol type="1" start="1">
         <li>
            <p class="para_item">Check the reason and mode. If either is inappropriate for this design rule, return from the function.</p>
         </li>
         <li>
            <p class="para_item">Cycle the objects. If the mode is concurrent, loop through the objects passed through the data. If the mode is interactive or batch, cycle the NX database for objects to check.</p>
            <ul>
               <li>
                  <p class="para_item">Check if the type of the object is appropriate for the design rule, if not, skip to the next object.</p>
               </li>
               <li>
                  <p class="para_item">Check the object for compliance with the design rule implemented by this function. If the object does not comply, create (or update) a violation. If the object does comply, make sure to delete any violations associated with the object.</p>
               </li>
            </ul>
         </li>
      </ol>
      <p class="para_topic">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3. &nbsp;Clean up unused data.</p>
      <div class="title_division">Managing violations of objects</div>
      <p class="para_division">Violations are associated with both an object and a rule. So a particular violation can be thought of as a violation of a specific rule by a particular object. Do not create multiple violations of a rule by an object. Instead, check to see if there is already a violation of the same rule for the object, and update it with new data. You can use the function <b class="commandName">UF_RULE_create_or_update_vio</b> to do all of this.
      </p>
      <p class="para_division">Deleting the violation of a specific rule by a particular object can be done using <b class="commandName">UF_RULE_delete_vio_by_obj_rule</b>. The design rule function should delete a violation once conditions are such that the rule is no longer being violated.
      </p>
   </body>
</html>