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") ;