File "bumps.il"

Full Path: /home/analogde/www/VirtualKeyboardSample/SKILL/bumps.il
File size: 6.16 KB
MIME-type: text/plain
Charset: utf-8

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
procedure(create_layer()

	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      )
	layer = techCreateLayer(tf 110 "RDL1" "level1")
	lp = techCreateLP(tf '("RDL1" "drawing") "RDL1")
	techSetLPPacketName(lp "pink")

	layer = techCreateLayer(tf 111 "RDL2" "level2")
	lp = techCreateLP(tf '("RDL2" "drawing") "RDL2")
	techSetLPPacketName(lp "yellow")

	layer = techCreateLayer(tf 112 "RDL3" "level3")
	lp = techCreateLP(tf '("RDL3" "drawing") "RDL3")
	techSetLPPacketName(lp "yellow")

	layer = techCreateLayer(tf 113 "RDL4" "level4")
	lp = techCreateLP(tf '("RDL4" "drawing") "RDL4")
	techSetLPPacketName(lp "yellow")

	layer = techCreateLayer(tf 114 "RDL2" "level5")
	lp = techCreateLP(tf '("RDL5" "drawing") "RDL5")
	techSetLPPacketName(lp "yellow")

	layer = techCreateLayer(tf 115 "SPHERON1" "spheron1")
	lp = techCreateLP(tf '("SPHERON1" "drawing") "SPHERON1")
	techSetLPPacketName(lp "blue")

	layer = techCreateLayer(tf 116 "SPHERON2" "spheron2")
	lp = techCreateLP(tf '("SPHERON2" "drawing") "SPHERON1")
	techSetLPPacketName(lp "blue")

	layer = techCreateLayer(tf 117 "SPHERON3" "spheron3")
	lp = techCreateLP(tf '("SPHERON3" "drawing") "SPHERON3")
	techSetLPPacketName(lp "blue")

	layer = techCreateLayer(tf 118 "SPHERON4" "spheron4")
	lp = techCreateLP(tf '("SPHERON4" "drawing") "SPHERON4")
	techSetLPPacketName(lp "blue")


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

	techCreateCustomViaDef(tf "pat" cv "RDL1" "RDL2") ; vue VIA 

	techCreateCustomViaDefByName(tf "pat" "work_180nm" "SPH1" "via" "RDL1" "RDL2")

	techGetViaLayers(tf)

	;; obsolete
	;;techSetViaLayers( tf list(list( "RDL1" "SPHERON1" "RDL2") ))
	;; obsolete
	;;techSetViaLayer( tf "RDL1" "SPHERON1" "RDL2" )

)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
procedure(delete_layer()

	id = techFindViaDefByName(tf "viad")
	techDeleteViaDef(id)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
procedure(create_via()

	lib = "work_180nm"	
	cell = "toto"
	view = "layout"

	cv=geGetWindowCellView()

    	id_src = dbOpenCellViewByType(lib cell view "maskLayout" "w")
    
	box = list(10:10 100:100)
	dbCreateEllipse(id_src "Metal1" 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 "Generation"
				             ?callback "matrice_bump()"
				           ) 
			
			         80:180
			         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)
	    )	
	)

)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;tf=techGetTechFile(cvId)
;viaDef=techFindViaDefByName(tf "M3_M2")
;dbCreateVia(cvId viaDef 10:20 "R0") ;