Un ingeniero con formación en esta disciplina relata cómo resolvió el reto de ingeniería inversa de un ASIC propuesto por Jane Street, una firma conocida por sus puzles técnicos. El desafío consistía en partir de un archivo GDS —un formato estándar que describe la geometría de un chip— y deducir qué hace el circuito, sin más pistas que un apretón de manos y un «suerte». El autor no sabía al principio qué significaba GDS ni VCD, así que empezó a explorar los archivos sin documentación previa.
En los ficheros encontró pistas reconocibles como señales de reloj (clk), reset (rst) y voltajes (VGND, VPWR), además de elementos lógicos con el prefijo sky130_fd_sc_hd__, correspondiente a la biblioteca estándar abierta Sky130 para diseño de chips. Tras extraer el logo de Jane Street como prueba de que podía manipular los archivos —una tarea que resultó inesperadamente difícil—, pasó a estudiar la documentación oficial no oficial de Sky130 para entender la función de cada celda, desde puertas lógicas básicas como «and» hasta otras más opacas como «o21bai».
Con esa base y la capacidad de la biblioteca gdstk de exportar a SVG y comprobar solapamientos en dos dimensiones, pudo mapear geometría con entradas y salidas de cada elemento. El puzle warmup contenía 27 celdas y permitió comparar lo conocido con lo visible; en el puzle principal, un archivo VCD contenía texto ASCII que descifró con un programa en C hasta obtener el mensaje «TRY AGAIN». El siguiente paso fue construir su propio simulador de circuitos en SQLite y un lenguaje propio para describir hardware, una desviación que el propio autor reconoce como pérdida de tiempo. Tras abandonarla, abordó la extracción del circuito con un algoritmo que detecta elementos adyacentes y solapados en capas consecutivas, consolidando segmentos de cable en un único conductor antes de convertir el diseño en un grafo procesable.
