📄 clinecut.il
字号:
;; The following 4 lines graphically display the cut
;; in the form. It is the second line down on the
;; symbol.
axlGRPDrwLine(handle list('(100 500) '(200 500)))
axlGRPDrwLine(handle list('(300 500) '(700 500)))
axlGRPDrwLine(handle list('(1100 500) '(1400 500)))
axlGRPDrwLine(handle list('(1500 500) '(1700 500)))
axlGRPDrwLine(handle list('(700 600) '(100 600)))
axlGRPDrwLine(handle list('(1100 600) '(1700 600)))
axlGRPDrwLine(handle list('(700 700) '(100 700)))
axlGRPDrwLine(handle list('(1100 700) '(1700 700)))
axlGRPDrwLine(handle list('(700 800) '(100 800)))
axlGRPDrwLine(handle list('(1100 800) '(1700 800)))
axlGRPDrwLine(handle list('(700 900) '(100 900)))
axlGRPDrwLine(handle list('(1100 900) '(1700 900)))
; draw user selection window
putprop(handle "unfilled" 'fill)
putprop(handle "white" 'color)
putprop(handle 1 'width)
axlGRPDrwRectangle(handle '(200 200) '(1500 1100))
; draw plus sign to indicate start of window
putprop(handle 20 'width)
axlGRPDrwLine(handle list('(100 200) '(300 200)))
axlGRPDrwLine(handle list('(200 300) '(200 100)))
; draw dimension lines
putprop(handle 1 'width)
putprop(handle "black" 'color)
axlGRPDrwLine(handle list('(1500 150) '(1500 50)))
axlGRPDrwLine(handle list('(1400 400) '(1400 50)))
;; draw dotted cut line
putprop(handle 1 'width)
putprop(handle "black" 'color)
;; right side of graphic
axlGRPDrwLine(handle list('(1400 450) '(1400 550)))
axlGRPDrwLine(handle list('(1400 575) '(1400 625)))
axlGRPDrwLine(handle list('(1400 650) '(1400 725)))
axlGRPDrwLine(handle list('(1400 750) '(1400 825)))
axlGRPDrwLine(handle list('(1400 875) '(1400 950)))
;; left side of graphic
axlGRPDrwLine(handle list('(300 375) '(300 425)))
axlGRPDrwLine(handle list('(300 450) '(300 550)))
axlGRPDrwLine(handle list('(300 575) '(300 625)))
axlGRPDrwLine(handle list('(300 650) '(300 725)))
axlGRPDrwLine(handle list('(300 750) '(300 825)))
axlGRPDrwLine(handle list('(300 875) '(300 950)))
; draw arrow leaders
putprop(handle "filled" 'fill)
axlGRPDrwPoly(handle list('(1500 100) '(1600 75) '(1600 125)))
axlGRPDrwPoly(handle list('(1400 100) '(1300 75) '(1300 125)))
axlGRPDrwLine(handle list('(1300 100) '(1100 100)))
axlGRPDrwLine(handle list('(1600 100) '(1700 100)))
; add text
putprop(handle "red" 'color)
putprop(handle "transparent" 'text_bkmode)
axlGRPDrwText(handle '(250 25) "Cut Distance")
; add line to indicate area to be cut.
putprop(handle 30 'width)
;; right side
axlGRPDrwLine(handle list('(1400 400) '(1500 400)))
;; left side
axlGRPDrwLine(handle list('(200 400) '(300 400)))
; add text
putprop(handle "black" 'color)
putprop(handle "transparent" 'text_bkmode)
axlGRPDrwText(handle '(800 400) "U1")
; add entry from cut distance
putprop(handle "black" 'color)
putprop(handle "transparent" 'text_bkmode)
; right side
axlGRPDrwText(handle '(1400 200) sprintf(dist "%L" cutwidth))
;; left side
axlGRPDrwText(handle '(200 200) sprintf(dist "%L" cutwidth))
); end defun
;###########################################################
;# #
;# End of _lcb_cutcline_graphic #
;# #
;###########################################################
;########################################################################
;# #
;# Function _saveSelSet #
;# #
;########################################################################
(defun _saveSelSet ()
(list (axlGetSelSet) (axlGetFindFilter nil) (axlGetFindFilter t)))
;########################################################################
;# #
;# Function _restoreSelSet #
;# #
;########################################################################
(defun _restoreSelSet (oldSelSet "l")
(axlSetFindFilter ?enabled (cons "noall" (nth 1 oldSelSet))
?onButtons (cons "noall" (nth 2 oldSelSet)))
(axlSingleSelectObject (car oldSelSet))
t)
;########################################################################
;# #
;# Function findAllOfType #
;# #
;########################################################################
(defun findAllOfType (findType "t")
(let (selSet oldSetData)
(setq oldSetData (_saveSelSet))
(axlClearSelSet)
(axlSetFindFilter ?enabled (list "noall" findType "invisible")
?onButtons (list "noall" findType))
(axlAddSelectAll)
(setq selSet (axlGetSelSet))
(_restoreSelSet oldSetData)
selSet))
;########################################################################
;# #
;# Function ashFindAllClines #
;# #
;########################################################################
(defun ashFindAllClines ()
(findAllOfType "CLINES")
); end ashFindAllClines
;########################################################################
;# #
;# Function ashFindAllClinesegs #
;# #
;########################################################################
(defun ashFindAllClinesegs ()
(findAllOfType "CLINESEGS"))
;###########################################################
;# #
;# _createForm_clinecut #
;# #
;###########################################################
(defun _createForm_clinecut ()
prog( ()
clinecut_form_file = "./clinecut.form"
clinecut_form = outfile(clinecut_form_file "w")
fprintf(clinecut_form "FILE_TYPE=FORM_DEFN VERSION=2\n")
fprintf(clinecut_form "FORM \n")
fprintf(clinecut_form "FIXED\n")
fprintf(clinecut_form "PORT 36 19\n")
fprintf(clinecut_form "HEADER \"name\"\n")
fprintf(clinecut_form "\n")
fprintf(clinecut_form "TILE\n")
fprintf(clinecut_form "TEXT \"Cut Distance:\" tcut\n")
fprintf(clinecut_form "TLOC 2 6\n")
fprintf(clinecut_form "TGROUP \"Cut_Clines_By_Window\"\n")
fprintf(clinecut_form "ENDTEXT\n")
fprintf(clinecut_form "\n")
fprintf(clinecut_form "TEXT\n")
fprintf(clinecut_form "TLOC 19 6\n")
fprintf(clinecut_form "INFO units 8\n")
fprintf(clinecut_form "TGROUP \"Cut_Clines_By_Window\"\n")
fprintf(clinecut_form "ENDTEXT\n")
fprintf(clinecut_form "\n")
fprintf(clinecut_form "TEXT \"Range:\" range\n")
fprintf(clinecut_form "TLOC 2 8\n")
fprintf(clinecut_form "TGROUP \"Cut_Clines_By_Window\"\n")
fprintf(clinecut_form "ENDTEXT\n")
fprintf(clinecut_form "\n")
fprintf(clinecut_form "TEXT\n")
fprintf(clinecut_form "TLOC 8 8\n")
fprintf(clinecut_form "INFO minvalue 8\n")
fprintf(clinecut_form "TGROUP \"Cut_Clines_By_Window\"\n")
fprintf(clinecut_form "ENDTEXT\n")
fprintf(clinecut_form "\n")
fprintf(clinecut_form "TEXT \"to\" to\n")
fprintf(clinecut_form "TLOC 11 8\n")
fprintf(clinecut_form "TGROUP \"Cut_Clines_By_Window\"\n")
fprintf(clinecut_form "ENDTEXT\n")
fprintf(clinecut_form "\n")
fprintf(clinecut_form "TEXT\n")
fprintf(clinecut_form "TLOC 13 8\n")
fprintf(clinecut_form "INFO maxvalue 8\n")
fprintf(clinecut_form "TGROUP \"Cut_Clines_By_Window\"\n")
fprintf(clinecut_form "ENDTEXT\n")
fprintf(clinecut_form "\n")
fprintf(clinecut_form "TEXT\n")
fprintf(clinecut_form "TLOC 20 8\n")
fprintf(clinecut_form "INFO dbunits 8\n")
fprintf(clinecut_form "TGROUP \"Cut_Clines_By_Window\"\n")
fprintf(clinecut_form "ENDTEXT\n")
fprintf(clinecut_form "\n")
fprintf(clinecut_form "FIELD cutwidth\n")
fprintf(clinecut_form "FLOC 12 6\n")
fprintf(clinecut_form "FGROUP \"Cut_Clines_By_Window\"\n")
fprintf(clinecut_form "REALFILLIN 5 5\n")
fprintf(clinecut_form "REALMIN 1.0\n")
fprintf(clinecut_form "REALMAX 1000000.000000\n")
fprintf(clinecut_form "DECIMAL %n\n" dbaccuracy )
fprintf(clinecut_form "ENDFIELD\n")
fprintf(clinecut_form "\n")
fprintf(clinecut_form "FIELD drawarea\n")
fprintf(clinecut_form "THUMBNAIL\n")
fprintf(clinecut_form "FLOC 4 12\n")
fprintf(clinecut_form "FSIZE 25 10\n")
fprintf(clinecut_form "FGROUP \"Cut_Clines_By_Window\"\n")
fprintf(clinecut_form "ENDFIELD\n")
fprintf(clinecut_form "\n")
fprintf(clinecut_form "FIELD close\n")
fprintf(clinecut_form "FLOC 3 23\n")
fprintf(clinecut_form "FGROUP \"Cut_Clines_By_Window\"\n")
fprintf(clinecut_form "MENUBUTTON \"Close\" 13 3\n")
fprintf(clinecut_form "ENDFIELD\n")
fprintf(clinecut_form "\n")
fprintf(clinecut_form "FIELD info\n")
fprintf(clinecut_form "FLOC 17 23\n")
fprintf(clinecut_form "FGROUP \"Cut_Clines_By_Window\"\n")
fprintf(clinecut_form "MENUBUTTON \"Info\" 10 3\n")
fprintf(clinecut_form "ENDFIELD\n")
fprintf(clinecut_form "\n")
fprintf(clinecut_form "GROUP \"Cut_Clines_By_Window\"\n")
fprintf(clinecut_form "GLOC 1 2\n")
fprintf(clinecut_form "GSIZE 33 25\n")
fprintf(clinecut_form "ENDGROUP\n")
fprintf(clinecut_form "\n")
fprintf(clinecut_form "ENDTILE\n")
fprintf(clinecut_form "\n")
fprintf(clinecut_form "ENDFORM\n")
close(clinecut_form)
); end prog
); end defun
;###########################################################
;# #
;# End of _createForm_clinecut #
;# #
;###########################################################
(defun clinecut_info_createInfo ()
clinecut_info_helpfile = "./clinecut_info_info.txt"
clinecut_info_info = outfile(clinecut_info_helpfile "w")
fprintf(clinecut_info_info "################################################################################\n")
fprintf(clinecut_info_info "# #\n")
fprintf(clinecut_info_info "# Command: clinecut #\n")
fprintf(clinecut_info_info "# Skill File: clinecut.il #\n")
fprintf(clinecut_info_info "# How To Load: Command> (load(\"clinecut.il\")) #\n")
fprintf(clinecut_info_info "# How To Execute: Command> clinecut OR #\n")
fprintf(clinecut_info_info "# clinecut [-]help OR #\n")
fprintf(clinecut_info_info "# clinecut [-]h OR #\n")
fprintf(clinecut_info_info "# #\n")
fprintf(clinecut_info_info "# Author: Larry Bowman, Cadence Design Systems #\n")
fprintf(clinecut_info_info "# Email: bowman@cadence.com #\n")
fprintf(clinecut_info_info "# Telephone: 512-349-1109 #\n")
fprintf(clinecut_info_info "# Creation Date: 11/21/2001 #\n")
fprintf(clinecut_info_info "# #\n")
fprintf(clinecut_info_info "################################################################################\n")
fprintf(clinecut_info_info "\n")
fprintf(clinecut_info_info "################################################################################\n")
fprintf(clinecut_info_info "# DISCLAIMER: #\n")
fprintf(clinecut_info_info "# The user of this command assumes all responsibility and does not #\n")
fprintf(clinecut_info_info "# hold Cadence Design Systems nor the author of this code for any #\n")
fprintf(clinecut_info_info "# unwarranted results or problems due to the use of this code. #\n")
fprintf(clinecut_info_info "# #\n")
fprintf(clinecut_info_info "# This is non-supported code and the user may modify it as needed. #\n")
fprintf(clinecut_info_info "# #\n")
fprintf(clinecut_info_info "################################################################################\n")
fprintf(clinecut_info_info "\n")
fprintf(clinecut_info_info "################################################################################\n")
fprintf(clinecut_info_info "# #\n")
fprintf(clinecut_info_info "# DESCRIPTION: #\n")
fprintf(clinecut_info_info "# This program will cut cline segments based a user defined window #\n")
fprintf(clinecut_info_info "# boundary. The distance to cut will be based on the user's input #\n")
fprintf(clinecut_info_info "# in the form. This distance is always orthogonal to the boundary #\n")
fprintf(clinecut_info_info "# line drawn by the user. #\n")
fprintf(clinecut_info_info "# #\n")
fprintf(clinecut_info_info "# A new subclass, CUTLINE, will be created under the MANUFACTURING class. #\n")
fprintf(clinecut_info_info "# This is used for a visual inspection of how the cline segments were #\n")
fprintf(clinecut_info_info "# cut from the window drawn by the user. #\n")
fprintf(clinecut_info_info "# #\n")
fprintf(clinecut_info_info "# The minimum cut distance is calculated to be twice the smallest #\n")
fprintf(clinecut_info_info "# trace width in the design. The maximum cut distance was arbitrarily #\n")
fprintf(clinecut_info_info "# set to be 1 inch. #\n")
fprintf(clinecut_info_info "# #\n")
fprintf(clinecut_info_info "# This is a destructive operation so it may be wise to save the design #\n")
fprintf(clinecut_info_info "# before issuing this command. The algorithm looks at all cline segments #\n")
fprintf(clinecut_info_info "# that crosses the boundary lines. It then deletes the original cline #\n")
fprintf(clinecut_info_info "# segment and replaces it with two new cline segments. The distance #\n")
fprintf(clinecut_info_info "# between these new cline segments will be the orthogonal \"cut distance\" #\n")
fprintf(clinecut_info_info "# as specified in the form. #\n")
fprintf(clinecut_info_info "# #\n")
fprintf(clinecut_info_info "# If the new cline segment within the window boundary will be longer #\n")
fprintf(clinecut_info_info "# than the original cline segment then only one cline segment will be #\n")
fprintf(clinecut_info_info "# generated. This one cline segment will end at the window boundary. #\n")
fprintf(clinecut_info_info "# #\n")
fprintf(clinecut_info_info "# Thus if the \"Cut Distance\" is larger than the window boundary drawn #\n")
fprintf(clinecut_info_info "# by the user than no cline segments will remain within the window #\n")
fprintf(clinecut_info_info "# boundary. #\n")
fprintf(clinecut_info_info "# #\n")
fprintf(clinecut_info_info "# It is also possible as well as probable that there will be dangling #\n")
fprintf(clinecut_info_info "# clines as a result of this operation. That is there may be cline #\n")
fprintf(clinecut_info_info "# segments without any net name association. It is up to the user to #\n")
fprintf(clinecut_info_info "# rectify this condition. #\n")
fprintf(clinecut_info_info "# #\n")
fprintf(clinecut_info_info "# This operation may also cause a Line-Line DRC violation. Again, it #\n")
fprintf(clinecut_info_info "# is the user's responsibility to correct this condition. #\n")
fprintf(clinecut_info_info "# #\n")
fprintf(clinecut_info_info "################################################################################\n")
fprintf(clinecut_info_info "\n")
close(clinecut_info_info)
axlUIViewFileCreate(clinecut_info_helpfile "Info" t list(82 20))
deleteFile(clinecut_info_helpfile)
); end defun
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -