File "bump.il"
Full Path: /home/analogde/www/VirtualKeyboardSample/SKILL/bump.il
File size: 8.11 KB
MIME-type: text/plain
Charset: utf-8
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
procedure(create_RDL_layers()
cv=geGetWindowCellView()
tf=techGetTechFile(cv)
;; onc25 200/201 ....
;; packet m1_drawing
;; ( display m1_drawing slash w1_1x red red )
;; ( display m2_drawing backSlash w1_1x pink pink )
; tsmc18
layer_id1 = 300 ; RDL1
layer_id2 = 301 ; RDL2
layer_id3 = 302 ; RDL3
layer_id4 = 303 ; RDL4
layer_id5 = 304 ; RDL5
layer_id6 = 305 ; SPHERON1
layer_id7 = 306 ; SPHERON2
layer_id8 = 307; SPHERON3
layer_id9 = 308 ; SPHERON4
; gpdk
; layer_id1 = 110 ; RDL1
; layer_id2 = 111 ; RDL2
; layer_id3 = 112 ; RDL3
; layer_id4 = 113 ; RDL4
; layer_id5 = 114 ; RDL5
; layer_id6 = 115 ; SPHERON1
; layer_id7 = 116 ; SPHERON2
; layer_id8 = 117 ; SPHERON3
; layer_id9 = 118 ; SPHERON4
; onc25
; layer_id1 = 110 ; RDL1
; layer_id2 = 111 ; RDL2
; layer_id3 = 112 ; RDL3
; layer_id4 = 113 ; RDL4
; layer_id5 = 114 ; RDL5
; layer_id6 = 115 ; SPHERON1
; layer_id7 = 116 ; SPHERON2
; layer_id8 = 117 ; SPHERON3
; layer_id9 = 118 ; SPHERON4
layer = techCreateLayer(tf layer_id1 "RDL1" "level1")
lp = techCreateLP(tf '("RDL1" "drawing") "RDL1")
techSetLPPacketName(lp "pink")
layer = techCreateLayer(tf layer_id2 "RDL2" "level2")
lp = techCreateLP(tf '("RDL2" "drawing") "RDL2")
techSetLPPacketName(lp "yellow")
layer = techCreateLayer(tf layer_id3 "RDL3" "level3")
lp = techCreateLP(tf '("RDL3" "drawing") "RDL3")
techSetLPPacketName(lp "yellow")
layer = techCreateLayer(tf layer_id4 "RDL4" "level4")
lp = techCreateLP(tf '("RDL4" "drawing") "RDL4")
techSetLPPacketName(lp "yellow")
layer = techCreateLayer(tf layer_id5 "RDL5" "level5")
lp = techCreateLP(tf '("RDL5" "drawing") "RDL5")
techSetLPPacketName(lp "yellow")
layer = techCreateLayer(tf layer_id6 "SPHERON1" "spheron1")
lp = techCreateLP(tf '("SPHERON1" "drawing") "SPHERON1")
techSetLPPacketName(lp "blue")
layer = techCreateLayer(tf layer_id7 "SPHERON2" "spheron2")
lp = techCreateLP(tf '("SPHERON2" "drawing") "SPHERON2")
techSetLPPacketName(lp "blue")
layer = techCreateLayer(tf layer_id8 "SPHERON3" "spheron3")
lp = techCreateLP(tf '("SPHERON3" "drawing") "SPHERON3")
techSetLPPacketName(lp "blue")
layer = techCreateLayer(tf layer_id9 "SPHERON4" "spheron4")
lp = techCreateLP(tf '("SPHERON4" "drawing") "SPHERON4")
techSetLPPacketName(lp "blue")
;;;;; valide ;;;;;;;;
myvia=techCreateStdViaDef(tf "S1" "RDL1" "RDL2"
list("SPHERON1" 0.5 0.5 5.0) list(2 2 '(0.15 0.15))
'(0.05 0.005) '(0.1 0.01) '(0.0 0.0) '(0.3 0.3) '(0.7 0.7) )
techCreateCustomViaDefByName(tf "SPHERON1" "BCD" "SPHERON1" "via" "RDL1" "RDL2")
;;;;; essai
passe=techCreateStdViaDef(tf "passe" "METAL1" "RDL1"
list("SPHERON1" 0.5 0.5 5.0) list(2 2 '(0.15 0.15))
'(0.05 0.005) '(0.1 0.01) '(0.0 0.0) '(0.3 0.3) '(0.7 0.7) )
techCreateCustomViaDefByName(tf "SPHERON1" "BCD" "SPHERON1" "via" "METAL1" "RDL1")
techSetLayerFunction(tf "RDL1" "metal")
techSetLayerFunction(tf "SPHERON1" "cut")
techSetLayerFunctions( tf list( ("RDL1" "metal") ("SPHERON1" "cut") ) )
;;;;;;;;;;;;;;;;;;;;;;
;techCreateCustomViaDef(tf "pat" cv "RDL1" "RDL2") ; vue VIA
;techCreateCustomViaDefByName(tf "SPHERON1" "BCD" "SPHERON1" "via" "RDL1" "RDL2")
;techGetViaLayers(tf)
;; obsolete
;;techSetViaLayers( tf list(list( "RDL1" "SPHERON1" "RDL2") ))
;; obsolete
;;techSetViaLayer( tf "RDL1" "SPHERON1" "RDL2" )
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
procedure(delete_via()
id = techFindViaDefByName(tf "viad")
techDeleteViaDef(id)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
procedure(delete_layer()
techDeleteLayer( tf "RDL1" )
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
procedure(create_via()
lib = "BCD"
cell = list("SPHERON1" "SPHERON2" "SPHERON3" "SPHERON4")
layer = list("RDL1" "RDL2" "RDL3" "RDL4" "RDL5")
;
view = "via"
cv=geGetWindowCellView()
for(i 0 3
id_src = dbOpenCellViewByType(lib nth(i cell) view "maskLayout" "w")
box = list(-50:-50 50:50)
dbCreateEllipse(id_src nth(i layer) box)
dbCreateEllipse(id_src nth(i+1 layer) box)
box = list(-25:-25 25:25)
dbCreateEllipse(id_src nth(i cell) box)
dbSave(id_src)
dbClose(id_src)
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
procedure(gui_bump()
champs = list(
list(hiCreateIntField( ?name 'ligne
?prompt "Nombre ligne :"
?value 1
?defValue 1
?range (range 0 100)
;?editable nil
)
30:10
150:30
100
)
list(hiCreateIntField( ?name 'colonne
?prompt "Nombre colonne :"
?value 1
?defValue 1
?range (range 0 100)
;?editable nil
)
30:40
150:30
100
)
list(hiCreateFloatField( ?name 'spacing_x
?prompt "Distance X :"
?value 1.0
?defValue 1.0
?range (range 0 1000)
;?editable nil
)
30:70
150:30
100
)
list(hiCreateFloatField( ?name 'spacing_y
?prompt "Distance Y :"
?value 1.0
?defValue 1.0
?range (range 0 1000)
;?editable nil
)
30:100
150:30
100
)
list(hiCreateFloatField( ?name 'diametre
?prompt "Diametre Bump :"
?value 1.0
?defValue 1.0
?range (range 0 1000)
;?editable nil
)
30:140
150:30
100
)
list(hiCreateButton( ?name 'bouton_generer_bump
?buttonText "Create Bump Matrix"
?callback "matrice_bump()"
)
80:180
150:30
100
)
list(hiCreateButton( ?name 'bouton_generer_layer_RDL
?buttonText "Create RDL layers"
?callback "create_RDL_layers()"
)
80:220
150:30
100
)
)
hiCreateAppForm( ?name 'form_bump
?fields champs
?formTitle "# Bump Tools #"
?unmapAfterCB nil
?initialSize t
?callback 'matrice_bump()
)
hiDisplayForm('form_bump)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
procedure(matrice_bump()
cv=geGetWindowCellView()
ligne = form_bump~>ligne~>value
colonne = form_bump~>colonne~>value
spacing_x = form_bump~>spacing_x~>value
spacing_y = form_bump~>spacing_y~>value
diametre = form_bump~>diametre~>value
;ligne = 5
;colonne = 6
;spacing_x = 200.00
;spacing_y = 200.00
;diametre = 300.00
rayon = diametre / 2.0
; paire ?
test = evenp(colonne)
if(test == t then
x_start = (colonne / 2.0) * spacing_x + (colonne / 2.0) * diametre - (diametre + spacing_x) / 2.0
bof = 8
else
x_start = ( (colonne - 1) * spacing_x + (colonne - 1) * diametre ) / 2.0
)
; paire ?
test = evenp(ligne)
if(test == t then
y_start = (ligne/ 2.0) * spacing_y + (ligne / 2.0) * diametre - (diametre + spacing_y) / 2.0
else
y_start = ( (ligne - 1) * spacing_y + (ligne - 1) * diametre ) / 2.0
)
for(i 0 ligne-1
ycentre = y_start - i * (spacing_y + diametre)
for(j 0 colonne-1
xcentre = x_start - j * (spacing_x + diametre)
x1 = xcentre - rayon
y1 = ycentre - rayon
x2 = xcentre + rayon
y2 = ycentre + rayon
box = list(x1:y1 x2:y2)
dbCreateEllipse(cv "METAL1" box)
)
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
gui_bump()
;tf=techGetTechFile(cvId)
;viaDef=techFindViaDefByName(tf "M3_M2")
;dbCreateVia(cvId viaDef 10:20 "R0") ;