Bonjour,
J'essaie de créer un tableau contenant les lignes de référence pour chaque modèle. Chaque ligne de référence correspond au rendement attendu pour chaque modèle. J'ai l'intention d'avoir un script capable d'importer les lignes de référence de la table centrale et de tracer la ligne de référence sur les cartes de contrôle ou les cartes de variabilité lors de l'évolution des rendements de chaque modèle.
Voici mes données factices pour la table de rendement
| Modèle | ID de plaquette | Rendement |
| IC1 | UN | 50 |
| IC1 | B | 60 |
| IC1 | C | 70 |
| IC2 | E | 30 |
| IC2 | F | 40 |
| IC2 | g | 50 |
| IC2 | H | 60 |
| IC3 | R. | 80 |
| IC3 | S | 90 |
| IC3 | T | 70 |
| IC3 | Z | 65 |
Voici ma table de lignes de référence factices qui doit être importée dans les cartes de contrôle
| Modèle | Ligne de référence pour les attentes de rendement |
| IC1 | 50 |
| IC2 | 45 |
| IC3 | 70 |
La carte de contrôle ou la carte de variabilité que j'essaie de tracer a "Rendement" sur l'axe y et "WaferID" comme axe x. Par conséquent, je ne peux pas utiliser la fonction « propriété de colonne » dans la colonne « Rendement » pour définir les lignes de référence. J'ai plus de 60 circuits intégrés à examiner et je cherche de l'aide pour les automatiser plutôt que les saisir manuellement. Voici un exemple d’instantané de ce que j’essaie de réaliser. Toute aide serait grandement appréciée.

J'ai pris un chemin différent. J'ai divisé la colonne Rendement par modèle pour créer une colonne distincte par modèle. Ensuite, en utilisant Propriétés de colonne > Limites de spécifications > Cible, entrez les valeurs attendues (qui sont essentiellement des cibles, non ?). Voir fichier joint.
Loacliser JSL dans les différents langages pris en charge par JMP est parfaitement possible, mais demande un certain effort supplémentaire. Pour plus de détails sur la manière de procéder, consultez le Papier découverte par @hecht_jmp . Par exemple, si vous travaillez avec des nœuds de plan (comme dans le code ci-dessus) et que vous les référencez par leur nom, cela échouera presque certainement. En revanche, le référencement par numéro (comme dans le code ci-dessus), peut échouer si la structure du rapport change (par exemple, si le contenu du rapport s'enrichit entre les versions).
Il est probablement préférable d'envoyer un e-mail à support@jmp.com et de les diriger vers ce fil de discussion.
J'ai testé ce JSL sur mon JMP11 chinois. Obtenez le rapport suivant dans le journal. Je n'arrive toujours pas à tracer une ligne de référence. Pouvez-vous m'expliquer ?
GMan
Merci beaucoup Ian. Cela fonctionne très bien.
Le code ci-dessous produira :

et devrait vous aider à démarrer. Vous pouvez utiliser « Aide > Livres > Guide de script » et « Aide > Index de script » pour comprendre ce qu'il fait. Notez que l'utilisation des titres des nœuds de plan n'est actuellement pas très robuste, mais cela pourrait être amélioré, ou fait différemment.
NamesDefaultToHere(1);
// Yield table
dt1 =
New Table( "Yield",
Add Rows( 11 ),
New Column( "Model",
Character,
"Nominal",
Set Values(
{"IC1", "IC1", "IC1", "IC2", "IC2", "IC2", "IC2", "IC3", "IC3", "IC3",
"IC3"}
)
),
New Column( "WaferID",
Character( 16 ),
"Nominal",
Set Values( {"A", "B", "C", "E", "F", "G", "H", "R", "S", "T", "Z"} )
),
New Column( "Yield",
Numeric,
"Nominal",
Format( "Best", 12 ),
Set Values( [50, 60, 70, 30, 40, 50, 60, 80, 90, 70, 65] )
)
);
// Reference table
dt2 =
New Table( "Reference",
Add Rows( 3 ),
New Column( "Model", Character, "Nominal", Set Values( {"IC1", "IC2", "IC3"} ) ),
New Column( "Value",
Numeric,
"Nominal",
Format( "Best", 12 ),
Set Values( [50, 40, 70] )
)
);
// Start here . . .
// Get the values in dt2 into lists for later
modelVal = Column(dt2, "Model") << getValues;
refVal = Column(dt2, "Value") << getValues;
// Control Charts
cc = dt1 << Control Chart(
Sample Label( :WaferID ),
Chart Col( :Yield, Individual Measurement ),
By( :Model )
);
// Loop over the control chart reports
for(r=1, r<=NItems(cc), r++,
ccRep = Report(cc[r]);
// Extract the level of 'Model' from the title of the outline node
title = ccRep[OutlineBox(1)] << getTitle;
delimPos = Munger(title, 1, "=");
level = Substr(title, delimPos+1, Length(title)-delimPos);
// Get the reference value and plot it using a graphics script
ref = refVal[Loc(modelVal, level)];
Eval(
Substitute(
Expr(ccRep[FrameBox(1)] << addGraphicsScript(PenColor("Blue"); HLine(TBD))),
Expr(TBD),
ref[1]
);
);
);