Como ingeniero de verificación de diseño de chips, ¿cuál es la mejor manera de pasar al ingeniero de software?

Es difícil hacer una recomendación sin comprender sus antecedentes en los últimos 5 años como ingeniero de verificación (por ejemplo: qué tipo de ASIC y qué dominio era su área o trabajo, qué metodologías aprendió / usó, etc.) y qué áreas de software le interesan.

Supongo que no está buscando un cambio drástico de la verificación ASIC a las tecnologías web o la gestión de bases de datos u otro desarrollo de software a nivel de aplicación.

Una tendencia general en el diseño de chips es que los diseños digitales se vuelven cada vez más diseños SOC (System on Chip) con microprocesadores integrados y componentes del sistema. Las complejidades del diseño también están en constante aumento. Un trabajo de verificación exige más habilidades de software con la industria adoptando ampliamente lenguajes como SystemVerilog y metodologías como UVM que se basan en conceptos de programación orientados a objetos.

También hay varias áreas relacionadas en la verificación o validación de chips si tiene más interés en el software. La mayoría de estos necesitan una sólida comprensión de las habilidades de software y programación junto con los fundamentos del diseño de hardware.

1) Desarrollo de herramientas EDA : se están produciendo muchas innovaciones en el desarrollo de herramientas EDA, en términos de nuevos simuladores con mejor eficiencia, estímulo portátil y basado en gráficos para su uso en diferentes niveles de verificación / validación, mejora de depuración y automatización y muchos más.

2) Verificación conjunta de HW / SW: mucha verificación de diseño ahora tiene más énfasis en el desarrollo y prueba de software junto con el desarrollo de hardware. Una tendencia es tener modelos tempranos de diseños portados a emuladores o FPGA para permitir el desarrollo temprano de software. Esta verificación conjunta combinada de HW&SW utiliza patrones de prueba de software o aplicaciones reales para simular en modelos de diseño de hardware en el emulador, y ayuda a identificar problemas de nivel de sistema y cuellos de botella de rendimiento anteriormente.

3) Modelado a nivel del sistema y exploración arquitectónica: muchos diseños de chips necesitan un modelado abstracto de alto nivel antes de que comience la implementación del diseño para ayudar a comprender cómo se ajusta a la aplicación / sistema diseñado y las diferentes posibilidades de arquitectura que le darán la potencia / rendimiento correctos especificaciones. La mayor parte de este trabajo ocurre en lenguajes de alto nivel como C ++ o System C y necesita buenas habilidades de software

4) Desarrollo de firmware para diseños SOC: la mayoría de los chips con procesadores integrados necesitan que se desarrolle firmware para programar el chip y permitir diferentes tipos de pruebas en el laboratorio y eventualmente en el sitio del cliente. Este también es un trabajo de software, pero necesita mucha comprensión sobre el diseño interno del hardware.

Espero que esto ayude y estaremos encantados de ayudarlo si tiene alguna otra pregunta específica.

Con 5 años de experiencia, un cambio al software no es tan difícil.

(fuente de la imagen: http://www.pixabay.com )

La pregunta y el comentario carecen de información sobre lo que realmente está haciendo como parte del equipo de diseño y verificación. ¿Estás usando systemverilog? Systemverilog comparte conceptos con lenguajes de software.

El tamaño y la complejidad del chip también serían un factor. ¿Escribiste software embebido en C y C ++? ¿O trabajó con un sistema operativo (SO) que se ejecuta en un procesador incorporado?

El movimiento inmediato y más obvio sería pasar a la validación de chip o al equipo de firmware. Si ha codificado su trabajo de verificación, eso facilita las cosas. Sepa que tener conocimiento y experiencia como ingeniero de hardware es muy valioso para un desarrollador de firmware.

Como ingeniero de diseño y verificación de chips, utiliza scripts de shell, está familiarizado con Linux y probablemente también use un lenguaje de scripting como Python. Python ha crecido con los años y ahora se usa para el aprendizaje automático (Google TPU, tensorflow), por lo que sería algo a considerar. O si te gusta Linux, Linux integrado podría ser algo para ti. Controladores para chips o controladores dentro del kernel para varias interfaces de comunicación específicas para el ASIC en el que está trabajando es otra posibilidad.

Confía en mí, no será tan difícil, ciertamente no cuando tengas 5 años de experiencia. ¡Te deseo buena suerte en tu cambio de carrera!

Un cambio al firmware es bastante sencillo. En un momento de mi carrera, hice ambos trabajos en la misma empresa. Para convertirse en un ingeniero de software, bueno, esto es difícil, especialmente si tienes un título de EE. Sabemos cómo codificar, sabemos idiomas, incluso podemos saber una o dos cosas sobre las bases de datos, pero no tenemos absolutamente ninguna idea de cómo aplicar los requisitos comerciales y el software moderno del arquitecto. No tenemos conocimiento de las metodologías adecuadas y el uso de IDE. También tenemos poca idea de cómo se prueba el software.

En resumen, el software y el hardware son dos mundos diferentes. Los ingenieros de verificación ni siquiera tendrían un conocimiento decente de OOP (para decirle un secreto, muchos de nosotros no tenemos idea) si no fuera por Vera, Specman y la posterior adopción de SystemVerilog.

El desarrollo del firmware es divertido, está muy cerca del hardware, ofrece muchas manos al tiempo con el chip en el laboratorio. El ingeniero de verificación puede funcionar fácilmente como desarrollador de firmware, aunque en mi opinión personal construir bancos de pruebas y depurar ondas es más divertido que usar el depurador en el laboratorio. Si te tomas en serio el cambio al software, es un largo camino si no tienes antecedentes académicos de SW. Todos podemos codificar, pero no nos convierte en desarrolladores de software de la noche a la mañana.

Sí tu puedes. Tenía un buen amigo que se mudó para la verificación ASIC al desarrollo de software en Google. Es necesario tener un excelente conocimiento de los lenguajes informáticos relevantes, ya sea Python, C ++ o Java.

Es posible que desee explorar y realizar un cambio intermedio: ir a una empresa EDA como Synopsys o Cadence. Estos desarrollan software de simulación y síntesis para ASIC Design and Verification y su conocimiento de la verificación ASIC será útil.

Busque trabajos SDET, son una especialización de ingeniería de software que coincide con su experiencia; encuentre qué herramientas o lenguajes de programación están más cerca de su conocimiento previo y bajo demanda, estudíelos y solicite trabajos.

[A2A] Es muy difícil responder preguntas que no incluyen detalles específicos. ¿De qué software estamos hablando aquí? Software embebido?

Para abreviar, sí, tal vez, si hay un cruce significativo entre los dos dominios. Personalmente, he conocido a alguien que pasó del desarrollo de firmware a la verificación ASIC y supongo que al revés también debería ser cierto.