File "save_dev_skill.il"

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

nombre_pins = 0


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
procedure(ponderation(caractere)
	
prog( ()

	caractere = lowerCase(caractere)

	case( caractere
	     
		("0"
		  valeur = 0 	
		)
		("1"
		  valeur = 1 	
		)
		("2"
		  valeur = 2 	
		)
		("3"
		  valeur = 3 	
		)
		("4"
		  valeur = 4 	
		)
		("5"
		  valeur = 5 	
		)
		("6"
		  valeur = 6 	
		)
		("7"
		  valeur = 7 	
		)
		("8"
		  valeur = 8 	
		)
		("9"
		  valeur = 9 	
		)

		("a"
		  valeur = 21 	
		)
		("b"
		  valeur = 22 	
		)
		("c"
		  valeur = 23 	
		)
		("d"
		  valeur = 24 	
		)
		("e"
		  valeur = 25 	
		)
		("f"
		  valeur = 26 	
		)
		("g"
		  valeur = 27 	
		)
		("h"
		  valeur = 28 	
		)
		("i"
		  valeur = 29 	
		)
		("j"
		  valeur = 30 	
		)
		("k"
		  valeur = 31 	
		)
		("l"
		  valeur = 32 	
		)
		("m"
		  valeur = 33 	
		)
		("n"
		  valeur = 34 	
		)
		("o"
		  valeur = 35 	
		)
		("p"
		  valeur = 36 	
		)
		("q"
		  valeur = 37 	
		)
		("r"
		  valeur = 38 	
		)
		("s"
		  valeur = 39 	
		)
		("t"
		  valeur = 40 	
		)
		("u"
		  valeur = 41 	
		)
		("v"
		  valeur = 42 	
		)
		("w"
		  valeur = 43 	
		)
		("x"
		  valeur = 44 	
		)
		("y"
		  valeur = 45 	
		)
		("z"
		  valeur = 46 	
		)
		("z"
		  valeur = 46 	
		)

		("-"
		  valeur = 50 	
		)
		("_"
		  valeur = 51 	
		)



	)

	return(valeur)

   );prog	

)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
procedure(ordonner(liste)

   prog( ()	
		liste_classer = '()

		for(j 0 length(liste)-1
	        	if(j == 0 then  
	 		   a = nth(j liste)
			   b = nth(j+1 liste)
			   val = min(a b)
			)
			if(j > 0 then  
			   a = nth(j liste)
			   val = min(val a)
			)
	   	)
	
		min = val  
		declare(tab[length(liste)])

		for(i 0 length(liste)-1
		    tab[i] = nth(i liste)
	        )

		for(j 0 length(liste)-1-1
 	            for(i 0 length(liste)-1-1
	  	        a = tab[i]
	  	        b = tab[i+1]
	                if(b<a then
	                   tab[i] = b
		           tab[i+1] = a
                        )
	            )
                ) 

		for(i 0 length(liste)-1
		    liste_classer = append1(liste_classer tab[i])
		)		

		return(liste_classer)

    );prog	

)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
procedure(classer()


	;val = getchar("abcd" 3) 
	;getchar("abcd" 2) 

	;charToInt(val)

	;charToInt('Before)

	;lulu = parseString( "feed_int_pll<54>" "_<>")      

	;y = '(le chien du voisin)   
	;remdq('i y)                

	;remd( "x" y)     

	;remove( "x" '("a" "b" "x" "d" "f")) 

	;y = '(a b x d f x g)    
	;remdq('x y)    

	;reverse(tmp3)

	;sort(pins)

;;;;
	pins = list("trim_clk_scan<4>" "trim_clk_scan<2>" "trim_clk_scan<1>" "trim_clk_scan<3>" 
		   "paulo" "bdsgingo" "reset" "trim_clk_scan<0>"  "un_a_4_ab<8>"
		   "un_a_4_ab<2>" "un_a_4_ab<1>" "un_a_4_ab<5>")

	;pins = list("un_a_4_ab<8>" "un_a_4_ab<2>" "un_a_4_ab<1>" "un_a_4_ab<5>")

	;pins = list("unq" "aeqa" "mpqgf" "fghfhzq")
	

	tmp1 ='()
	tmp2 ='()

	for(i 0 length(pins)-1
	    result = parseString( nth(i pins) "_<>")  
     	    ptr = 0
	    provi = ""
	    for(j 1 length(result)
		
		if(j == 0 then
		   provi = strcat(nth(ptr result) nth(ptr+1 result) )
		   ptr = 2
		else
		     provi = strcat(provi nth(ptr result) )
		    ptr = ptr +1
		)

	    )		
 
	    tmp1 = append1(tmp1 provi)

	    total = 0	
	    val = ""	
	    for(k 1 strlen(provi)
		val = substring(nth(i tmp1) k 1)
		total = total + ponderation(val)
		;test = atoi(val)
		;if(test == nil then		
      		;	ascii =	charToInt('val)
		;        total = total + ascii
		;else 
		;     total = total + test
		;)
	    )
	    printf(" Total : %d \n" total)

	    tmp2 = append1(tmp2 total)	

	)
         
	classement_pins = '()
	classement_pins = ordonner(tmp2) 

	tmp3 = '()

	for(i 0 length(pins)-1
	    for(j 0 length(pins)-1
		if( nth(i classement_pins) == nth(j tmp2) then
		    tmp3 = append1(tmp3 j)	
		    j= 100
		)

	    )	
	)

	for(i 0 length(pins)-1
		position = nth(i tmp3) 
		printf(" ** : %s \n" nth(position pins) )
	)

	stringList = list( "xyz" "abc" "ghi" )
	sort( pins 'alphalessp )  

	cv=geGetWindowCellView()
	terminal_list = sort(cv~>terminals~>name nil) 
	sort( terminal_list 'alphalessp )  
    


	;alphalessp

	;alphalessp( "name" "name1" )   => t
	;alphalessp( "third" "fourth" ) => nil
	;alphalessp('a 'ab)             => t

	;keys=sort(myTable->? 'alphalessp)

	;foreach(key keys
	;printf("%s %s\n" key myTable[key])
	;)

	alphalessp( "formulaire" "fortune" )
 
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
procedure(pins()

	cpt_gauche=0
	cpt_droite=0
	cpt_haut=0 
	cpt_bas=0
	espace=1

	position= "left"

	delta_x = 0.0 
	delta_y = 0.0
	x1 = 0.0
	y1 = 0.0

	minX=0
	minY=0

      	L = 0.4
      	H = 0.6
	
	cv=geGetWindowCellView()

	tmp1 = '()

	terminal_list = sort(cv~>terminals~>name nil) 
	ordonner_terminal = sort( terminal_list 'alphalessp )  

	for(i 0 length(ordonner_terminal)-1
	    id = leSearchHierarchy(cv cv~>bBox 0 "pin" list(list("term name" "==" nth(i ordonner_terminal) ))) 
	    tmp1 = append1(tmp1 car(id))	
	)


	for(i 0 length(ordonner_terminal)-1
		printf(" ** : %s \n" nth(i tmp1)~>pin~>term~>name )
	)

	

	for(i 0 length(terminal_list)-1	
		case( position
	     
					("left"
						if(cpt_gauche==0 then
					       		x1=minX
							y1=minY
							cpt_gauche++
							H_precedent=H
						else
							x1=x1
							y1=y1+H_precedent+espace
							cpt_gauche++	
							H_precedent=H	
				                );if	
					)
				
					("right"
						if(cpt_droite==0 then
					       		x1=maxX-L
					       		y1=minY
					       		cpt_droite++
					       		H_precedent=H
					    	else
				       			x1=x1
							y1=y1+H_precedent+espace
		 				        cpt_droite++
						        H_precedent=H	
					        );if	
	      				)

					("top"
						if(cpt_haut==0 then
				        		x1=minX
 				        		y1=maxY-H
					        	cpt_haut++
				       			L_precedent=L
				    		else
						        x1=x1+L_precedent+espace
				       			y1=maxY-H	
  				       			cpt_haut++       
				       			L_precedent=L	
				      		);if	
	      				)

					("bottom"
						if(cpt_bas==0 then
						       x1=minX
						       y1=minY
						       L_precedent=L
						       cpt_bas++
					    	else
						       x1=x1+L_precedent+espace
					       	       y1=y1				       
						       L_precedent=L	
						       cpt_bas++
						);if	
	      				)
				    ); case

				delta_x=x1+L	;x0
				delta_y=y1+H	;y0
				couple=list(x1:y1 delta_x:delta_y)
				printf(" nouvelle taille %L \n"  couple)
				
				nth(i pins)~>bBox=couple


		
	)

)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;dbList = sort(dbList lambda((a b) alphalessp(a~>cellName b~>cellName)))
;
;dbList = sort(dbList 'mySort)
;procedure(mySort(a b)
;    alphalessp(a~>cellName b~>cellName)
;)