Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
SKILL
:
dev_skill02.il
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; procedure(selection_pins() if(Form_appli~>selection_pins~>value == "Toutes" then for(i 0 length(pins)-1 sprintf(indice "Form_appli~>bouton_%d~>value = t" i) exp= evalstring(indice) ) printf("[info]: All selected \n") else for(i 0 length(pins)-1 sprintf(indice "Form_appli~>bouton_%d~>value = nil" i) exp= evalstring(indice) ) printf("[info]: All Unselected \n") ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 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(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 ) (">" valeur = 60 ) (">" valeur = 61 ) ) return(valeur) );prog ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; procedure(classement() cv = geGetWindowCellView() terminal_list = cv~>terminals~>name pins_simple = '() pins_bus = '() ; détecter les bus for(i 0 length(terminal_list)-1 flag = rexMatchp("[<>]" nth(i terminal_list) ) if(flag == nil then pins_simple = append1(pins_simple nth(i terminal_list)) else pins_bus = append1(pins_bus nth(i terminal_list)) ) ) pins_simple_ordonner = '() pins_simple_ordonner = sort(pins_simple nil) poids = '() for(i 0 length(pins_bus)-1 chaine = '() total = 0 chaine = parseString( nth(i pins_bus) ":_<>") for(i 0 length(chaine)-1 test=atoi(nth(i chaine)) if(test != nil then total = total + test ) if(test == nil then val = "" str = nth(i chaine) for(k 1 strlen(str) val = substring(str k 1) total = total + ponderation(val) ) ) ) ;printf(" Total : %d \n" total) poids = append1(poids total) ) classement_poids = '() classement_poids = ordonner(poids) tmp3 = '() for(i 0 length(pins_bus)-1 for(j 0 length(pins_bus)-1 if( nth(i classement_poids) == nth(j poids) then tmp3 = append1(tmp3 j) j= 100 ) ) ) bus_ordonner = '() for(i 0 length(pins_bus)-1 position = nth(i tmp3) ;;printf(" ** : %s \n" nth(position pins_bus) ) bus_ordonner = append1(bus_ordonner nth(position pins_bus) ) ) pins = '() pins = pins_simple_ordonner for(i 0 length(bus_ordonner)-1 pins = append1(pins nth(i bus_ordonner) ) ) tmp2 = '() for(i 0 length(pins)-1 ;id = leSearchHierarchy(cv cv~>bBox 0 "label" list(list("text" "==" nth(i pins) ))) id = leSearchHierarchy(cv cv~>bBox 0 "pin" list(list("term name" "==" nth(i pins) ))) tmp2 = append1(tmp2 car(id)) ) longueur = length(pins) champs_datas = '() y = 0 id_champs = hiCreateLabel( ?name 'champs ?labelText "Nom pin Largeur Hauteur Selection Position Couche Pin Couche Label" ) champs_datas = append1(champs_datas list(id_champs 10:y 20:50 )) y=0 for(i 0 longueur-1 nom = nth(i tmp2)~>net~>name id_nom = stringToSymbol(sprintf(nil "nom_%d" i)) id_nom = hiCreateLabel( ?name stringToSymbol(sprintf(nil "nom_pin_%d" i)) ?labelText nom ) champs_datas = append1(champs_datas list(id_nom 10:y+30 20:50 )) y = y + 30 ) y=0 for(i 0 longueur-1 box = nth(i tmp2)~>bBox x1 = car(car(box)) y1 = cadr(car(box)) x2 = car(cadr(box)) y2 = cadr(cadr(box)) largeur = abs(abs(x2) - abs(x1) ) hauteur = abs(abs(y2) - abs(y1) ) id_largeur = stringToSymbol(sprintf(nil "largeur_%d" i)) id_largeur = hiCreateFloatField( ?name stringToSymbol(sprintf(nil "largeur_pin_%d" i)) ?prompt "" ?value largeur ?defValue 10.0 ?callback "check_champ( Form_sec )" ;hiGetCurrentForm() ;"println(\"float changed\" )" ?range list(0 100) ) champs_datas = append1(champs_datas list(id_largeur 100:y+30 60:50 )) y = y + 30 ) y=0 for(i 0 longueur-1 box = nth(i tmp2)~>bBox x1 = car(car(box)) y1 = cadr(car(box)) x2 = car(cadr(box)) y2 = cadr(cadr(box)) largeur = abs(abs(x2) - abs(x1)) hauteur = abs(abs(y2) - abs(y1)) id_hauteur = stringToSymbol(sprintf(nil "hauteur_%d" i)) id_hauteur = hiCreateFloatField( ?name stringToSymbol(sprintf(nil "hauteur_pin_%d" i)) ?prompt "" ?value hauteur ?defValue 10.0 ?callback "check_champ( Form_sec )" ?range list(0 100) ) champs_datas = append1(champs_datas list(id_hauteur 180:y+30 60:50 )) y = y + 30 ) y = 0 for(i 0 longueur-1 id_bouton = hiCreateBooleanButton( ?name stringToSymbol(sprintf(nil "bouton_%d" i)) ?buttonText " " ?value t ?defValue nil ;?callback "println("toto")" ) champs_datas = append1(champs_datas list(id_bouton 250:y+30 60:50 )) y = y + 30 ) y=0 for(i 0 longueur-1 position = "left" id_position = stringToSymbol(sprintf(nil "position_%d" i)) id_position = hiCreateCyclicField( ?name stringToSymbol(sprintf(nil "position_pin_%d" i)) ?prompt " " ?choices list("left" "right" "top" "bottom") ?value position ?callback "println( \"position change\" )" ) champs_datas = append1(champs_datas list(id_position 350:y+40 200:50 10)) y = y + 30 ) y=0 for(i 0 longueur-1 couche = "METAL1" id_couche = stringToSymbol(sprintf(nil "couche_%d" i)) id_couche = hiCreateCyclicField( ?name stringToSymbol(sprintf(nil "couche_pin_%d" i)) ?prompt " " ?choices list("METAL1" "METAL2" "METAL3" "METAL4") ?value couche ?callback "println( \"couche change\" )" ) champs_datas = append1(champs_datas list(id_couche 450:y+40 200:50 10)) y = y + 30 ) y=0 for(i 0 longueur-1 couche = "METAL1" id_label = hiCreateCyclicField( ?name stringToSymbol(sprintf(nil "label_pin_%d" i)) ?prompt " " ?choices list("METAL1" "METAL2" "METAL3" "METAL4") ?value couche ?callback "println( \"couche change\" )" ) champs_datas = append1(champs_datas list(id_label 550:y+40 200:50 10)) y = y + 30 ) separateur = hiCreateSeparatorField( ?name 'sep2 ) y = y + 50 champs_datas = append1(champs_datas list(separateur 0:y 635:0)) id_space = hiCreateFloatField( ?name 'spacing ?prompt "Espace:" ?value 0.28 ?defValue 0.28 ?range list(0 100) ) champs_datas = append1(champs_datas list(id_space 10:y 130:80 50)) y = y + 70 id_style = hiCreateCyclicField( ?name 'text_style ?choices '("stick" "roman" "gothic") ?prompt "Style :" ?value "stick" ?defValue "stick" ) champs_datas = append1(champs_datas list(id_style 10:y 10:100 50)) id_frame = hiCreateFrameField( ?name 'frame ) champs_datas = append1(champs_datas list(id_frame 150:y 400:200 )) ze =hiCreateLabel( ?name 'sourceBoxLabel ?labelText " Commum " ) champs_datas = append1(champs_datas list(ze 180:y-10 50:25 )) position_commune = hiCreateCyclicField( ?name 'position_commune ?prompt " " ?choices list("left" "right" "top" "bottom") ?value position ?callback "println( \"position change\" )" ) champs_datas = append1(champs_datas list(position_commune 180:y+20 180:240 50)) pin_commune = hiCreateCyclicField( ?name 'pin_commune ?choices '("stick" "roman" "gothic") ?prompt " " ?value "stick" ?defValue "stick" ) champs_datas = append1(champs_datas list(pin_commune 300:y+20 300:360 50)) label_commun = hiCreateCyclicField( ?name 'label_commun ?choices '("stick" "roman" "gothic") ?prompt " " ?value "stick" ?defValue "stick" ) champs_datas = append1(champs_datas list(label_commun 400:y+20 400:460 50)) id_taille = hiCreateFloatField( ?name 'taille ?prompt "Taille:" ?value 0.28 ?defValue 0.28 ?range list(0 10000) ) champs_datas = append1(champs_datas list(id_taille 10:y+20 130:80 50)) y = y + 60 selection = hiCreateRadioField( ?name 'selection_pins ?prompt "Selection: " ?choices list( "Toutes" "Aucunes" ) ?value "Toutes" ?defValue "Toutes" ?callback list("selection_pins()") ) champs_datas = append1(champs_datas list(selection 200:y+20 130:80 80)) btn_place = hiCreateButton( ?name 'btn_place ?buttonText "Placer pins" ?callback "placer()" ) champs_datas = append1(champs_datas list(btn_place 200:y+50 110:30 10)) Form_appli = hiCreateAppForm( ?name 'Form_sec ?formTitle "PIN Definition : @ patrice.delpy" ?fields champs_datas ?callback 'verifier_focus ?initialSize t ?buttonLayout 'OKCancelApply ?unmapAfterCB nil ) hiDisplayForm(Form_appli) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; procedure(placer() cpt_gauche=0 cpt_droite=0 cpt_haut=0 cpt_bas=0 espace = 0.0 H_precedent = 0.0 L_precedent = 0.0 minX=0 minY=0 maxX=100 maxY=100 decalage_left = 0 decalage_right = 0 decalage_top = 0 decalage_bottom = 0 tmp3 = '() espace = Form_appli~>spacing~>value style = Form_appli~>text_style~>value liste_orient = '() for(i 0 length(pins)-1 sprintf(largeur "Form_appli~>largeur_pin_%d~>value" i) L = evalstring(largeur) sprintf(hauteur "Form_appli~>hauteur_pin_%d~>value" i) H = evalstring(hauteur) sprintf(position "Form_appli~>position_pin_%d~>value" i) pos = evalstring(position) sprintf(couche "Form_appli~>couche_pin_%d~>value" i) layer = evalstring(couche) sprintf(etat_bouton "Form_appli~>bouton_%d~>value" i) check_etat = evalstring(etat_bouton) if(check_etat == t then case( pos ("left" ;printf(" LEFT \n" ) angle = "R0" if(cpt_gauche==0 then x1=minX y1=minY + decalage_bottom cpt_gauche++ H_precedent=H decalage_left = L + espace else x1=x1 y1=y1+H_precedent+espace cpt_gauche++ H_precedent=H );if ) ("right" ;printf(" right \n" ) angle = "R0" if(cpt_droite==0 then x1=maxX-L y1=minY cpt_droite++ H_precedent=H decalage_right = 1 else x1=x1 y1=y1+H_precedent+espace cpt_droite++ H_precedent=H );if ) ("top" ;printf(" top \n" ) angle = "R90" if(cpt_haut==0 then x1=minX y1=maxY-H cpt_haut++ L_precedent=L decalage_top = 1 else x1=x1+L_precedent+espace y1=maxY-H cpt_haut++ L_precedent=L );if ) ("bottom" angle = "R90" ;printf(" bottom \n" ) if(cpt_bas==0 then x1=minX + decalage_left y1=minY L_precedent=L cpt_bas++ decalage_bottom = H + espace 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 tmp2)~>bBox=couple nth(i tmp2)~>lpp=list(layer "pin") liste_orient = append1(liste_orient angle) ) ) tmp3 = '() for(i 0 length(pins)-1 id = leSearchHierarchy(cv cv~>bBox 0 "label" list(list("text" "==" nth(i pins) ))) tmp3 = append1(tmp3 car(id)) ) taille = Form_appli~>taille~>value for(i 0 length(pins)-1 if(check_etat == t then sprintf(couche "Form_appli~>label_pin_%d~>value" i) layer = evalstring(couche) box = nth(i tmp2)~>bBox centreX=((caadr(box) - caar(box))/2.0) + caar(box) centreY=((cadadr(box) - cadar(box))/2.0) + cadar(box) nth(i tmp3)~>xy=list(centreX centreY) nth(i tmp3)~>lpp = list(layer "pin") nth(i tmp3)~>height = taille ;0.2 nth(i tmp3)~>font = style if(nth(i liste_orient) == "R0" then nth(i tmp3)~>orient = "R0" else nth(i tmp3)~>orient = "R90" ) ;printf(" Centre %L %L\n" centreX centreY) ) ) printf(" Placement is done ... \n" ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;