Siltronic AG es uno de los líderes tecnológicos mundiales en la industria de obleas de semiconductores. La producción de obleas de silicio requiere múltiples etapas de proceso, desde el crecimiento de los cristales hasta el empaquetado de las obleas.
En un entorno de producción complejo, se generan muchos datos, por lo que diferentes detalles son importantes desde distintas perspectivas. Los datos pueden guardarse en bases de datos y otros recursos que JMP generalmente puede cargar. Estos datos no caben en una sola tabla de datos. En esta charla, muestro cómo se puede ampliar una tabla de datos maestros con datos adicionales, según el contexto. También doy ejemplos de cómo consultar tablas adicionales que contienen información más detallada y que están vinculadas a la tabla de datos maestros.
La tabla de datos maestros incluye un conjunto de scripts de tabla para implementar las funciones descritas. Se describen fragmentos de código JSL detallados para implementar la funcionalidad descrita.
Hola a todos. Gracias por ver este video. Bienvenidos a mi presentación, Data Cockpit: Formas de ampliar una tabla maestra al hacer clic con datos adicionales. Primero, permítanme hablar sobre mi empresa, Siltronic. Contamos con cuatro plantas de producción de primer nivel, 4500 empleados, alcance global y más de 50 años de historia en tecnologías de silicio. Nos fundamos como parte de Wacker y produjimos nuestra primera oblea de 200 milímetros en 1984 y la primera de 300 milímetros en 1990. Lo que ocurre constantemente es la reducción de los tamaños, como pueden ver aquí con la regla de diseño de 11 nanómetros, siete, ocho, cinco, tres y, actualmente, dos.
En 2015, salimos a bolsa como sociedad anónima y actualmente nos estamos expandiendo con la nueva fábrica de fabricación (FAB) en Singapur y la planta de extracción de cristales en Friburgo. Aquí puede ver la cadena de valor de la electrónica y cómo aumenta su valor, comenzando con el polisilicio ultrapuro sobre las obleas de silicio semiconductor. Esta es nuestra etapa de producción en semiconductores y electrónica, y nuestro valor se ha multiplicado por más de 1000. Aquí puede ver la red internacional de fabricación. En Alemania, Friburgo y Burghausen, contamos con nuestra línea de diámetro pequeño e instalaciones de extracción de cristales y obleas, mientras que Burghausen es nuestro centro de I+D.
Contamos con instalaciones de obleas de 200 milímetros en Portland y Singapur. También contamos con instalaciones de extracción de cristales y de obleas de 300 milímetros en Singapur. Estas FAP en Singapur se encuentran entre las más nuevas y grandes del mundo. La tecnología de punta y un alto nivel de calidad son igualmente importantes para nosotros. Actualmente, trabajamos en dos nodos nanométricos y optimizamos simultáneamente más de 50 parámetros para la oblea, además de contar con trazabilidad individual. Por lo tanto, generamos una gran cantidad de datos. Este es nuestro flujo de trabajo de producción: comienza con la materia prima, silicio ultrapuro, la extracción de cristales con el método Czochralski o la extracción de zona de flotación, luego el rectificado de lingotes, el corte multihilo, el redondeo de bordes, el marcado láser, el lapeado, la limpieza y el grabado, el pulido y, finalmente, la epitaxia. Unas palabras sobre mí: soy ingeniero eléctrico y tengo un doctorado en simulación de procesos electrotérmicos, como el que realizamos en nuestra empresa. Tengo formación en estadística y mi trabajo principal es el desarrollo de procesos de crecimiento de cristales de silicio en Siltronic Freiburg. Quiero agradecer a mi empresa por permitirme asistir a la Cumbre de Descubrimiento y, además, realizar mi trabajo y colaborar con JMP, lo cual es fantástico.
También soy responsable del soporte del software JMP en Siltronic, con aproximadamente 500 usuarios. Ahora, sobre la aplicación Data Cockpit: Formas de ampliar una tabla maestra al hacer clic con datos adicionales. El problema que teníamos era que una tabla debía contener una descripción general de productos o lotes, e incluir gráficos para evaluar el rendimiento y otros parámetros. Nos gustaría tener tablas adicionales generadas según el contenido y la selección de la tabla principal, así como columnas adicionales que se puedan añadir con valores específicos. Además, nos gustaría proporcionar enlaces para obtener datos más detallados. Hemos visto que JMP es una excelente interfaz gráfica de usuario. La tabla de datos de JMP es una excelente interfaz gráfica de usuario para ello. Para solucionar esto, utilizamos numerosas consultas a bases de datos, en concreto el nuevo objeto de consulta SQL. Tomamos la tabla de datos de JMP para la descripción general y el controlador de eventos para actuar al hacer clic, y utilizamos numerosos scripts de tabla para iniciar plataformas, añadir columnas, generar tablas de detalle o ejecutar todo con un solo clic. Por lo tanto, JSL es una buena herramienta para implementar todas estas funciones. En la práctica, nuestros datos provienen de bases de datos de la empresa.
En esta presentación, simulo esto usando la tabla de datos de ejemplo "enlace anódico". El resumen de la cabina se compila mediante consultas a diversas tablas en la realidad. Se agregan tablas adicionales de la misma tabla o de otras bases de datos, y también se podrían implementar otras fuentes disponibles para JMP, como archivos, figuras y videos. En esta presentación, uso la tabla "enlace anódico" porque la consulta a la base de datos es bastante similar al acceso a bases de datos de empresas. En esta tabla de datos "enlace anódico", tenemos información de varios lotes, y para cada oblea, el lote es el ID de la oblea. Para cada oblea, tenemos funciones de datos como estas cinco variables: carga, flujo, posición, fuerza del pistón, vacío y voltaje, en orden, como se muestra aquí. Tenemos una evaluación, como buena o mala, para cada oblea. Así es como se ve la cabina con datos y scripts. Contiene el ID de la oblea, la evaluación y algunos datos agregados, como se puede ver aquí, y tiene muchos scripts de tabla. Aquí hay un enlace para profundizar. Aquí tenemos columnas, y las columnas adicionales se agrupan en el detalle del grupo de columnas. Lo veremos más adelante. También tenemos una columna de gráfico de tipo expresión.
Así se ve con más detalle, y ahora es el momento de cambiar a JMP. Aquí vemos la cabina, que ahora está vacía. Aquí tengo un script donde podemos ver el resumen de mi presentación para conocer los antecedentes. Aquí proporciono un script con documentación sobre cómo usar esta tabla. Lo explicaré en detalle. He agrupado los scripts. Podemos abrir el grupo de scripts y pulsar "Actualizar cabina" para obtener los datos principales. Pueden ver que tenemos 30 obleas listadas aquí con los datos agregados también.
Aquí hay un script para borrar la tabla y poder rellenarla de nuevo. Podemos consultar la base de datos completa, algo que no es posible en la aplicación real. Pero aquí puedo abrirla. Esta es una tabla de datos de ejemplo de JMP. La vemos con 122 filas y 2000 ID de oblea. En este gráfico, podemos ver los datos funcionales de la tabla de muestra de enlace anódico, como la carga, el flujo, etc. He buscado algunos datos detallados interesantes para acceder a la información general. Esta podría ser la posición 43 de la carga. Se puede ver que varía mucho. O la posición 40 del flujo, que es característica aquí, esta posición y la fuerza del pistón.
Ahí tenemos la posición 30 como posición característica, vacío, que es la posición tres. Eso puede ser interesante. Y voltaje, donde la posición 27 es interesante. Tenemos aquí un selector de columnas para cambiar fácilmente entre las variables. Esa es la base de datos que usamos. Lo cierro. Aquí estamos de nuevo en la cabina, y podemos ver cómo se hace esto. Actualizar cabina. Editamos el script. Vemos que es bastante pequeño, y principalmente usa una nueva consulta SQL. Como pueden ver aquí, pero no a una base de datos, sino a una tabla JMP. Esta es la principal diferencia entre acceder a una tabla JMP o a una base de datos. También uso SQL personalizado para colocar la consulta, para definirla. Pueden ver aquí que filtré solo una parte de los ID de las obleas para tener una pequeña en la cabina con la que trabajar. Obtuve algunos datos agregados aquí como máximo o promedio, como pueden ver aquí. El SQL se ve un poco desagradable porque tengo que escapar las comillas dobles aquí dentro de la cadena SQL personalizada.
Más adelante, veremos una forma más sencilla de hacerlo. La consulta se ejecuta y actualiza la tabla, la cabina. Aquí tengo que cerrar la tabla de datos de JMP, ya que JMP la abre y no la cierra al final de la consulta. Aquí elimino algunos scripts innecesarios al ejecutar la consulta. Es un script bastante pequeño, fácil de usar y fácil de mantener. Para borrar la tabla de datos, veamos lo que hago aquí: elimino todas las filas. Elimino la columna del gráfico (que veremos más adelante). Elimino todas las columnas de detalles del grupo de columnas que aparecerán más adelante y elimino la propiedad del ID de la oblea. Ejecutemos todo. Aquí podemos ver cómo se completa la cabina completa. Vemos que obtenemos tablas de detalles adicionales con gráficos. Para las obleas en la cabina, obtenemos detalles sobre los ID de las obleas (30, como consulté) y los datos detallados del flujo. Dentro de la tabla, coloco el script para mostrar el generador de gráficos y ver la curva de detalle. Puedo cerrarlo aquí. Lo mismo ocurre con el cargo.
Aquí puedes ver que hay una referencia de enlace y aquí un ID de enlace. En este generador de gráficos, puedo mostrar el panel de control y usar esta tabla de detalles... Esta tabla de detalles, puedo usar los datos de la tabla principal de la cabina, como aquí, la condición, como si estuvieran en la misma tabla con solo vincularla. Aquí la he usado como superposición para ver las obleas buenas y malas en diferentes colores. Para eso están los enlaces. Recorramos la cabina y echemos un vistazo a los detalles. Aquí, en gráficos, vemos un gráfico de resumen como la carga máxima sobre el ID de la oblea, de nuevo con un selector de columnas para ver diferentes variables. Si paso el cursor sobre un punto, veo un gráfico de detalles. Esto se debe a que incluí el gráfico en la tabla de datos como una columna e hice que esta columna fuera una etiqueta como puedes ver aquí. Esa es la razón por la que puedo ver los detalles aquí en el gráfico como una etiqueta. Tal vez podamos evaluar aquí si hay una diferencia en el promedio de vacío, ¿por qué bueno y malo?
O podemos hacer un análisis unidireccional, por ejemplo. Nuevamente, tenemos los detalles aquí también. ¿Cómo se hace esto como un script? Es simplemente un constructor de gráficos. Creé el constructor de gráficos, extraje el script de él y lo pegué en el script de la tabla como aquí. Aquí podríamos hacer un cribado de predictores como este con todos los valores agregados y también con los valores de detalle, como pueden ver aquí. Pueden ver qué parámetro puede hacer que la condición sea buena o mala. Cómo se hace esto, podemos verlo aquí. Simplemente toma... Busca la columna de detalle, detalles del grupo, si está allí, y si no está allí, simplemente llama al cribado de predictores con los valores agregados. Si los detalles del grupo de la columna de detalle están allí, también agrega los detalles del grupo de columnas, por lo que estas columnas aquí también al cribado de predictores. Ahora, hemos visto lo que hay en la sección de gráficos. Echemos un vistazo a más detalles. Detalles para el ID de oblea. Esto es solo una sugerencia para hacer clic en el ID de oblea que está aquí. Cuando hago clic aquí, obtenemos detalles del ID de oblea 1971 o 1973.
Simplemente se genera una nueva tabla, y la tabla viene con un script que muestra este gráfico.
¿Cómo se hace esto? Aquí se utiliza la tecnología de un controlador de eventos. En la información de la columna, vemos que tenemos el controlador de eventos. En el controlador de eventos, el marco de scripts ya lo proporciona JMP. Implementé un script para iniciar una consulta, y en esta consulta, puedo usar la columna y la fila donde estamos. Es un ID de oblea y el número del ID de oblea a los que puedo acceder. Aquí necesito la conexión a la base de datos. Dentro de este SQL que tengo aquí, vemos una forma diferente de escribir una cadena donde no es necesario escapar las comillas dobles que necesitamos. Se ve un poco mejor. Usando Eval Insert, inserto el filtro de consulta, la condición de consulta, en esta consulta. Tomo aquí el ID de la columna actual, que es mi ID de oblea, aplico un filtro a la consulta y, al finalizar, cierro de nuevo la tabla de datos, elimino algunos scripts y agrego el script de carga versus pedido a la tabla. Eso es lo que hice. Presione aquí para obtener la tabla y presione aquí para obtener un gráfico. También podríamos hacer esto en un solo paso.
Ya no necesitamos esto. Veamos el siguiente script. Deselecciono todas las columnas y filas. Detalles de las filas seleccionadas. Necesito seleccionar algunas filas. Permítanme hacer esto. Seleccionaré una, tres, cinco, presionando la tecla Ctrl y detalles de las filas seleccionadas. Al hacerlo, obtengo la curva de vacío para estos tres ID de oblea con la condición buena o mala en diferentes columnas en los términos del gráfico. Puedo comparar. ¿Cómo se hace esto? Puedes ver aquí, si voy a la ventana de inicio de JMP, que en segundo plano se crea el enlace anódico de la tabla, pero está oculto, y solo vemos el gráfico aquí, que es esta ventana. Puedo echar un vistazo a la tabla haciendo doble clic aquí. Entonces ya no está oculto. Veamos cómo funciona esto. Hay otra función: si cierro el gráfico, la tabla también desaparecerá. Solo veo la tabla. Veamos cómo se hace esto. Aquí, primero, esta es una ventana emergente si no se selecciona nada. Si se selecciona algo, compilo la cadena de lista de obleas. Es una cadena que contiene una lista de los ID de las obleas, y uso la función "sustituir" para cambiar ese corchete por estos corchetes.
Luego ocurre lo mismo con esta lista. Introduzco una nueva consulta SQL en la tabla de datos JMP y, mediante Eval Insert, introduzco esta lista de obleas como condición en la consulta SQL. Al ejecutar, completo lo mismo y luego el generador de grafos se agrega como script. Se ejecuta aquí, el generador de grafos. Le indico al objeto del generador de grafos que, al cerrar, cierre la tabla de datos, los detalles de la unión anódica y no guarde nada. Es un script pequeño, y creo que tiene una función útil: proporcionar una curva de los ID de las obleas seleccionadas. Al cerrarlo, todo desaparece. Hasta aquí, los detalles.
Ahora, vamos a actualizar los detalles. Como pueden ver, se han añadido columnas de detalle adicionales. He mostrado por qué son interesantes los puntos, y se añaden mediante este script. Permítanme borrar la tabla y actualizar la cabina para obtener los datos principales. Empecemos este script con las columnas de detalle. Pueden ver que estos detalles aparecen aquí. Les mostraré cómo funciona. Primero, compilo una lista con los nombres de las columnas que necesito, los nombres que necesito para la consulta y los valores de filtro que necesito para la consulta.
Compilo cada conjunto de datos en una matriz asociativa y creo una lista de matrices asociativas. Si las columnas de detalle no existen, las creo, como se puede ver aquí. Luego reviso toda la lista de detalles y creo... El siguiente paso fue crear el grupo de columnas de detalles aquí sobre todas las columnas de detalle. Y aquí viene el bucle sobre todos los detalles para aplicar la consulta para cada detalle, como se puede ver aquí. Nuevamente, con Eval Insert, introducimos el nombre y el valor que necesitamos para la consulta. Y este es el bucle para crear una tabla para cada columna de detalle. Y esta actualización introducirá los valores en la columna de detalle, como hemos visto antes. Y al final, dentro del bucle, por supuesto, necesito cerrar la tabla de detalles. Veamos de nuevo cómo funciona esto. Borro la tabla, actualizo la cabina y añado columnas de detalle como se puede ver aquí. No es un script muy grande, creo que es bastante fácil de mantener si se quiere entender cómo funciona. El siguiente detalle es añadir un gráfico para el vacío.
Funciona así. Lo presiono y se genera el gráfico. Me desplazo un poco hacia la derecha. El proceso es el siguiente: genera la columna y, luego, silencia la actualización de la tabla de datos. Para cada fila, aplicamos una consulta con el detalle necesario, como se hizo antes. Después, creamos el objeto del generador de gráficos y lo guardamos como una imagen en el vacío del gráfico de columnas. Al final, por supuesto, cerramos el generador de gráficos y la tabla de datos. Luego, configuramos la altura de la celda para poder ver el gráfico. Así es como funciona.
El siguiente detalle es la consulta de detalles de carga. Aquí es donde se encuentra la tabla adicional con el generador de gráficos, como se ve aquí. Es bastante sencillo. Simplemente se busca la lista de obleas de esta manera. Luego, se consulta la tabla de detalles, se le agrega una propiedad, se crea el script para el generador de gráficos y se ejecuta. Además, aquí se genera el ID del enlace y la referencia para poder usarlos. Lo cerré. Lo ejecutaré de nuevo para poder usarlos con este ID de oblea. No hay ninguna evaluación aquí.
La evaluación está en la tabla de la cabina solo aquí, en la condición. Eso me permite usarla en el detalle, graficar la evaluación. Cerrémosla de nuevo. Para el flujo, es lo mismo. Si no te gusta, digamos, que aparezcan todas las ventanas, y tienen muchas ventanas y, por lo tanto, borro de nuevo la tabla, puedes mover todo a un proyecto como podemos hacer aquí. Podemos crear un proyecto de la tabla de datos actual, que es la cabina. Podemos... Esto ya no lo necesitamos. Podemos usar la tabla como si estuviera sola. Podemos cerrar los paneles de la izquierda como aquí para tener la pantalla completa. Todo funciona aquí de manera similar. Podemos actualizar la cabina, etc. Al crear algunos detalles, como el detalle de la consulta para el cargo, lo obtendremos en pestañas y no en diferentes ventanas como podemos ver aquí. He terminado mi presentación. Gracias por su atención. Si tienen preguntas, nos vemos en la Cumbre de Descubrimiento, en el grupo de usuarios o en el Club de Scripters. Gracias de nuevo y que tengan un buen día. Adiós.