Consulte Elección de un programa de posgrado en Diseño VLSI y áreas relacionadas: Cosas a considerar por Pasquale Ferrara en Ingeniería Eléctrica + Ciencias de la Computación (EECS). En esta publicación, he dado una respuesta detallada a esta pregunta.
El conjunto exacto de habilidades que necesita está relacionado con el equipo de producto con el que estaría entrevistando. Por ejemplo, las habilidades para un puesto de ingeniero de software con un equipo de producto para síntesis lógica y verificación de equivalencia son similares. Por otro lado, sería muy diferente para puestos con equipos de productos para simulación de circuitos y diseño físico.
Algunas habilidades esperadas / deseadas establecidas para EDA:
- ¿Cuáles son algunas de las razones por las que un 'Tech Lead' evita cualquier contacto con su programador mejor capacitado?
- ¿Cómo puede un programador mejorar su eficiencia?
- ¿Cuál tiene mejores perspectivas en el futuro, un BBA o ingeniería de software?
- ¿Cómo se sienten los ingenieros de Silicon Valley por haber sido engañados debido al amplio cartel de fijación de salarios?
- ¿Qué lenguaje de programación se necesita para aprender a obtener una buena ubicación en las empresas de software?
- Diseño VLSI y / o diseño AMS / RF IC (consulte los conjuntos de habilidades antes mencionados para el diseño VLSI y el diseño AMS / RF IC)
- Fuertes habilidades de desarrollo de software C ++, no solo en la programación C ++ sino también en las siguientes habilidades; tenga en cuenta que algunas empresas o equipos de desarrollo de EDA pueden requerir habilidades de programación en Java o C #
- Gestión de configuración o control de revisión
- Construir automatización
- Pruebas de software, incluidas pruebas de regresión automatizadas.
- Modelado del sistema (con UML, un modelo de cálculo o un modelo matemático)
- Refactorización
- Depuración, incluida la depuración de memoria
- Gestión de memoria dinámica, en ausencia de recolección de basura automatizada
- Aislamiento de fallas y diseño tolerante a fallas de arquitectura de software y algoritmos
- Diseño arquitectónico de software (diseño jerárquico y modular)
- Diseño y análisis de algoritmos (incluida la complejidad computacional y la complejidad del circuito con aplicaciones a circuitos lógicos)
- Generación automática de documentos (a través de generadores de documentación para C ++, SystemC, Verilog / VHDL, MATLAB y Perl / Tcl / Python)
- Experiencia trabajando con sistemas operativos tipo UNIX, como GNU / Linux y Oracle Solaris (anteriormente Sun Solaris o Open Solaris)
- Conocimiento del proceso de desarrollo de software o ciclo de vida de desarrollo de software (SDLC)
- Metodologías de desarrollo de software (especialmente metodologías ágiles y otras metodologías de desarrollo iterativas e incrementales)
- Patrones de diseño para arquitectura de software, y quizás diseño arquitectónico VLSI
- Programación paralela, incluida la programación concurrente.
- Desarrollo de solucionadores y / o implementación de métodos numéricos y algoritmos de gráficos.
- Solucionadores SAT y SMT: procedimientos de decisión o razonamiento automatizado
- Damas modelo
- Métodos formales, incluido el conocimiento de la especificación de propiedad y las lógicas temporales (como CTL y LTL)
- Algoritmos de gráficos
- Programación de restricciones
- Modelo de reducción de pedidos
- Solucionadores de EDO
- Solucionadores de PDE
- Solucionadores de ecuaciones integrales
- Temas especiales, como los siguientes:
- Dominio de tiempo de diferencia finita (FDTD)
- Métodos de volumen finito
- Métodos de elementos finitos (FEM)
- Método del elemento límite (BEM)
- Métodos multigrid (MG)
- Experiencia en el desarrollo de herramientas EDA:
- Herramientas de nivel de sistema electrónico (ESL):
- Síntesis de alto nivel
- Comprobación de equivalencia de ESL a RTL
- Particionamiento de hardware / software
- Emulación acelerada por hardware
- Herramientas frontales
- Síntesis lógica (o más bien, síntesis RTL)
- Análisis de tiempo estático
- Análisis estadístico de tiempo estático
- Comprobación de modelo
- Comprobación de equivalencia
- Optimización de energía
- Simulación lógica y simulación RTL
- Simulación de fallas
- Generación automática de patrones de prueba
- Herramientas EDA relevantes para Diseño para Testability (DFT) y Self-test incorporado (BIST)
- Compiladores de memoria
- Herramientas de back-end (diseño físico y verificación física) + Diseño para Manufacturabilidad + Tecnología CAD (TCAD):
- Síntesis física: tamaño de la puerta, asignación de voltaje umbral, tamaño del cable e inserción del buffer
- Análisis de diafonía
- Análisis de integridad de señal
- Análisis de ruido
- Análisis térmico
- Plano de planta
- Particionamiento (nivel lógico)
- Colocación: colocación global y detallada
- Enrutamiento, incluido el enrutamiento global y detallado, y el enrutamiento FPGA
- Síntesis de la red de reloj
- Potencia y enrutamiento a tierra
- Compactación de diseño
- Extracción de diseño
- Extracción parasitaria
- Modelado de interconexión
- Verificación de reglas de diseño (DRC)
- Verificación de diseño versus esquema (LVS)
- Verificación de reglas eléctricas (ERC)
- Verificación de antena (para efecto de antena)
- Litografía computacional y sus herramientas de firma.
- Corrección óptica de proximidad (OPC)
- Tecnologías de mejora de resolución (RET)
- Preparación de datos de máscara (MDP)
- Simulación de circuito
- Conocimiento de los estándares de la industria (p. Ej., HDL, HVL, STIL y lenguajes y formatos de archivos de datos para compartir información entre herramientas EDA y los fabricantes de semiconductores) y herramientas / bibliotecas para manipular archivos para formatos comunes en EDA (p. Ej., OpenAccess de Si2)
- Desarrollo de GUI. Esta es una prioridad baja, ya que desea desarrollar el back-end de las herramientas EDA (por ejemplo, algoritmos para verificación de equivalencia o enrutamiento), en lugar del front-end de las herramientas EDA (es decir, GUI)