⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dfa_assembly.il

📁 ALLEGRO SKILL SAMPLE CODE
💻 IL
📖 第 1 页 / 共 3 页
字号:
/*
################################################################################
#                                                                              #
#                      Command: dfac                                           #
#                   Skill File: dfa_assembly.il                                #
#                  How To Load: Command> (load("dfa_assembly.il"))             #
#               How To Execute: Command> dfac                                  #
#               Sourcelink Solution Reference : 11297768                       #
#                                                                              #
#                       Author: Jatin Sasan , Cadence Design Systems           #
#                        Email: jsasan@cadence.com                             #
#                    Telephone: 512-342-5107                                   #
#                Creation Date: 08/14/2006                                     #
#                                                                              #
################################################################################

################################################################################
#                                                                              #
#  DISCLAIMER:                                                                 #
# THIS CODE IS UNSUPPORTED AND HAS HAD MINIMAL TESTING.                        #
# The following code is provided for Cadence customers                         #
# to use at their own risk. The code may require modification to               #
# satisfy the requirements of any user. The code and any                       #
# modifications to the code may not be compatible with current or              #
# future versions of Cadence products.                                         #
# THE CODE IS PROVIDED "AS IS" AND WITH NO WARRANTIES, INCLUDING               #
# WITHOUT LIMITATION ANY EXPRESS WARRANTIES OR IMPLIED WARRANTIES              #
# OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.                          #
#                                                                              #
################################################################################

################################################################################
#                                                                              #
#  08/16/2006:  Reports DFA violations w.r.t Assembly subclass                 #
#  Revision history:                                                           #
#	1.0 Original file		                 Aug 14,2006           #
#     1.1 Declared clearance as real field               Aug 16,2006           #
#     1.2 Took Assembly outline line_width into account  Aug 17,2006           #
#     2.0 a) Restores original Visibility of design after dfa run
#         b) Fixed Viewlog problem. Clicking on Viewlog will always
#            display logfile now.
#         c) Set the form defaults to * and *            Dec 09,2007           #
#                                                                              #
#  Advantages:                                                                 #
# a) Support Regular expression character *                                    #
# b) Calculates the clearance by creating a best fit bounding box on the       #
#    Assembly outline.No need for Assembly outline to be a perfect rectangle   #
#    or shape.                                                                 #
#                                                                              #
#  Limitations:                                                                #
# a) Doesnt Support Circular boundaries.                                       #
# b) Computational intensive for big Boards with large number of components    #
# c) Clearance for rotated components would be incorrect.                      #
################################################################################
*/

axlCmdRegister("dfac" 'dfac)

procedure(dfac()
  _makeForm_dfa_assembly()
   axlFormDisplay(_DFA_Form)
); end procedure

;###########################################################
;#                                                         #
;#                FORM CREATION                            #
;#                                                         #
;###########################################################

(defun _makeForm_dfa_assembly ()
   _DFA_Form=outfile("./DFA_Form.form" "w")
   fprintf(_DFA_Form "FILE_TYPE=FORM_DEFN VERSION=2\n")
   fprintf(_DFA_Form "FORM\n")
   fprintf(_DFA_Form "FIXED\n")
   fprintf(_DFA_Form "PORT 65 15\n")
   fprintf(_DFA_Form "HEADER \"DFA Assembly Checks\" \n")
   fprintf(_DFA_Form "POPUP <PROPS_VALUE> \"ASSEMBLY_TOP\" \"ASSEMBLY_TOP\",\"ASSEMBLY_BOTTOM\" \"ASSEMBLY_BOTTOM\". \n")
   fprintf(_DFA_Form "TILE\n")

   fprintf(_DFA_Form "TEXT \"Select the Assembly Subclass:\"\n")
   fprintf(_DFA_Form "TLOC 8 2\n")
   fprintf(_DFA_Form "ENDTEXT\n")   

   fprintf(_DFA_Form "FIELD PROPS_VALUE\n")
   fprintf(_DFA_Form "FLOC 32 2\n")
   fprintf(_DFA_Form "ENUMSET 16 \n")
   fprintf(_DFA_Form "POP PROPS_VALUE\n")
   fprintf(_DFA_Form "ENDFIELD\n")   

   fprintf(_DFA_Form  "TEXT \"Minimum clearance value:\"\n")
   fprintf(_DFA_Form  "TLOC 8 5\n")
   fprintf(_DFA_Form  "ENDTEXT\n")   

   fprintf(_DFA_Form  "FIELD CLEARANCE\n")
   fprintf(_DFA_Form  "FLOC 32 5\n")
   fprintf(_DFA_Form "REALFILLIN 5 5\n")
   fprintf(_DFA_Form "DECIMAL 3 \n")
   fprintf(_DFA_Form  "ENDFIELD\n")   

   fprintf(_DFA_Form  "TEXT \"Design Units:\"\n")
   fprintf(_DFA_Form "TLOC 40 5\n")
   fprintf(_DFA_Form "ENDTEXT\n")

   fprintf(_DFA_Form "FIELD DESIGN_UNITS \n")
   fprintf(_DFA_Form "FLOC 52 5\n")
   fprintf(_DFA_Form "STRFILLIN 10 10\n")
   fprintf(_DFA_Form "INFO_ONLY \n")
   fprintf(_DFA_Form "ENDFIELD\n")
  
   fprintf(_DFA_Form  "TEXT \"Component1 Selection:\"\n")
   fprintf(_DFA_Form "TLOC 8 8\n")
   fprintf(_DFA_Form "ENDTEXT\n")   

   fprintf(_DFA_Form "FIELD COMP1\n")
   fprintf(_DFA_Form "FLOC 32 8\n")
   fprintf(_DFA_Form "STRFILLIN 20 20\n")
   fprintf(_DFA_Form "ENDFIELD\n")

   fprintf(_DFA_Form "FIELD COMP1_BR\n")
   fprintf(_DFA_Form "FLOC 55 8 \n")
   fprintf(_DFA_Form "MENUBUTTON \"Browse\" 10 3\n")
   fprintf(_DFA_Form "ENDFIELD\n")

   fprintf(_DFA_Form "TEXT \"Component2 Selection:\"\n")
   fprintf(_DFA_Form "TLOC 8 11\n")
   fprintf(_DFA_Form "ENDTEXT\n")   

   fprintf(_DFA_Form "FIELD COMP2\n")
   fprintf(_DFA_Form "FLOC 32 11\n")
   fprintf(_DFA_Form "STRFILLIN 20 20\n")
   fprintf(_DFA_Form "ENDFIELD\n")

   fprintf(_DFA_Form "FIELD COMP2_BR\n")
   fprintf(_DFA_Form "FLOC 55 11 \n")
   fprintf(_DFA_Form "MENUBUTTON \"Browse\" 10 3\n")
   fprintf(_DFA_Form "ENDFIELD\n")

   fprintf(_DFA_Form "FIELD RUN\n")
   fprintf(_DFA_Form "FLOC 8 15 \n")
   fprintf(_DFA_Form "MENUBUTTON \"Run\" 10 3\n")
   fprintf(_DFA_Form "ENDFIELD\n")

   fprintf(_DFA_Form "FIELD CLOSE\n")
   fprintf(_DFA_Form "FLOC 30 15\n")
   fprintf(_DFA_Form "MENUBUTTON \"Close\" 10 3\n")
   fprintf(_DFA_Form "ENDFIELD\n")

   fprintf(_DFA_Form "FIELD LOG\n")
   fprintf(_DFA_Form "FLOC 50 15\n")
   fprintf(_DFA_Form "MENUBUTTON \"ViewLog\" 10 3\n")
   fprintf(_DFA_Form "ENDFIELD\n")

   fprintf(_DFA_Form "ENDTILE\n")
   fprintf(_DFA_Form "ENDFORM\n")
   close(_DFA_Form)
   _DFA_Form = axlFormCreate( (gensym) "DFA_Form.form" '(e inner) 'DFA_clearance_Form_Action t)

); end defun  _makeForm_dfa_assembly

(defun DFA_clearance_Form_Action (myform)
        case( myform->curField
                ("PROPS_VALUE" 
                   prop_value = myform->curValue
                 )
                ("CLEARANCE"
                   grid_inc = myform->curValue
                   design_value = car(axlDBGetDesignUnits())
                   axlFormSetField(myform "DESIGN_UNITS" design_value)
                   axlFormSetField(myform "COMP1" "*")
                   axlFormSetField(myform "COMP2" "*")
                   (setq comp1 "*") (setq comp2 "*")
                 )
                ("COMP1" 
                   comp1 = myform->curValue
                 )
                ("COMP2"
                   comp2 = myform->curValue
                 )
                 ("DESIGN_UNITS" 
                      /* NOTHING TO DO */     
                 )
                 ("COMP1_BR"
                       comp1 = car(axlUIDataBrowse('REFDES '(EXAMINE_DATABASE RETRIEVE_NAME) "Select Refdes" t))
                       axlFormSetField(myform "COMP1" comp1)
                 )
                 ("COMP2_BR"
                       comp2 = car(axlUIDataBrowse('REFDES '(EXAMINE_DATABASE RETRIEVE_NAME) "Select Refdes" t))
                       axlFormSetField(myform "COMP2" comp2)
                 )
                ("RUN" 
                       dfa_check_log=axlDMOpenLog("dfa_assembly_check")
                       fprintf(dfa_check_log "\t DFA ASSEMBLY VIOLATIONS log.\n\n")
                       v_layer_index = store_layer_index() ; To preserve which layers are currently visible.
                       status = clrn(comp1 comp2 grid_inc prop_value dfa_check_log)
                       if(status !=0 then
                           sprintf(msg_test,"%L violations reported. Click Viewlog for Details\n", status)
                           axlUIConfirm(msg_test)
                       else
                           axlUIConfirm("No DFA Violations reported")
                          ) ; end if
                       (setq windowcount 0)
                        foreach(layer_v v_layer_index
                          axlVisibleLayer(layer_v t)
                               )
                        axlUIWUpdate(nil)
                 )
                 ("CLOSE"
                    axlFormClose(myform)
                    axlCancelEnterFun()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -