Gracias por A2A. Permítame compartir mi propia historia de amor con VLSI que comenzó hace 3 años. Nuestra relación ha recorrido un largo camino y conozco un poco más de ella cada día. El viaje me ha hecho comprender tanto la amplitud como la profundidad del tema. Es un campo muy vasto con una gran cantidad de temas interdependientes y relacionados entre sí [Diseño de RTL, Funcional / Físico / Verificación de tiempo, Pruebas, DFT, Síntesis, Diseño físico, Diseño de células estándar, etc., por nombrar algunos]. No puedes dominarlo rápidamente. Su comprensión del tema mejorará con el tiempo y el esfuerzo constante. Pero, lo más importante, con la curiosidad de saber más y más de ella. He enumerado las cosas básicas que debe saber para tener éxito en el campo del diseño ASIC (no FPGA) / SoC. Simplemente sígalo y seguramente tendrá una base sólida para ser un ingeniero de VLSI exitoso.
1. Diseño lógico (LD)
Sí, esta es la habilidad más importante que debes poseer. La programación es una mera implementación de su idea, pero LD es el proceso de pensamiento en sí mismo. Debes poder diseñar un módulo usando min. Puertas, min. Potencia y max. Actuación. Este paso es superior en la jerarquía de diseño y afecta a todo el flujo a partir de ahí. Así que es realmente importante hacer explotar tus conceptos de LD. Ej .: diseño FSM, diseño basado en MUX, diseño basado en flops-latches, diseño Sync.-Aysnc.
Cómo aprender: tome una declaración de problema interesante, elabore un diseño de FSM optimizado e intente implementar el mismo usando min. recursos a nivel de la puerta.
2. Codificación HDL / RTL / HVL
Sí, sí, la industria necesita que usted codifique y codifique bien. Hay una diferencia entre la codificación RTL y la codificación C Aquí, el “tiempo” entra en juego. Debes aprender a codificar en Verilog / VHDL (aprendí Verilog). Con RTL, básicamente estás expresando el LD que se te ocurrió en 1 usando un lenguaje de hardware.
Cómo aprender: Comience a codificar módulos simples de inmediato. No pierdas el tiempo tratando de dominar la sintaxis. Aprenda a expresar el comportamiento del módulo en RTL y el compilador le enseñará el resto. Comience a escribir bancos de pruebas simples para verificar su corrección lógica / funcional. Luego, más tarde aprende la codificación RTL sintetizable.
Nota: Un paso más sería aprender SV, UVM, RAL, SVA, etc. a escribir TBs completamente automatizados. Este es un vasto campo en sí mismo. Estaba en FV en LSI y me pareció interesante. Si te gusta la codificación, entonces esto es para ti.
3. Fundamentos CMOS
Depende de si trabajará en el diseño de frontend o el diseño de backend. Esto es muy necesario en Backend / Diseño físico y diseño de circuito totalmente personalizado / diseño de celda estándar. Pero tener buenos fundamentos de MOS siempre es una ventaja. Es una necesidad para todos los trabajos de I + D.
Cómo aprender: comience a diseñar un circuito simple como el bloque SRAM / DRAM y verifique su sincronización y corrección funcional utilizando simulaciones de SPICE. Yo he hecho lo mismo.
- ¿Cuáles son los recursos para aprender en línea sobre psicología para principiantes?
- ¿Cuál es la mejor manera de aprender programación web?
- Cómo aprender la formación de pruebas ETL
- ¿Depende la memoria del tiempo de aprendizaje?
- ¿Por qué Labanotation es tan difícil de aprender?
4. Herramientas EDA
Ahora esto es una necesidad para todos los trabajos de la industria. Dado que casi todo el flujo de VLSI se automatiza utilizando herramientas EDA, es una necesidad para obtener experiencia en el manejo de ellos. Aprendí Cadence Virtuoso, Synopsys ICC, DC, PT, etc. Es una necesidad para casi todos los trabajos de Backend.
Cómo aprender: Las herramientas son caras. Tu universidad te proporcionará si es parte del plan de estudios. Pero si tiene la suerte de obtener una pasantía en una empresa de semiconductores, entonces es aún mejor.
5. Conceptos básicos de arquitectura de computadora / microprocesador
Casi todos los chips diseñados hoy en día son ASIC / SoC. Esto significa que debemos entender cómo está organizada la CPU y cómo funcionan juntas las distintas partes. Finalmente, terminará trabajando en un solo bloque dentro de la CPU, pero tener conocimiento de muchos bloques le ayudará a comprender mejor el chip y facilita el trabajo de integración.
Cómo aprender: Primero aprende la teoría básica. Luego intente diseñar e implementar un solo componente de CPU, por ejemplo, ALU o un controlador DMA. Tómelo a través de todo el flujo de RTL-> Netlist-> PD.
6. Implementación de protocolo / algoritmo
VLSI es solo una tecnología de implementación. En última instancia, está diseñando un chip para una aplicación específica, por ejemplo, procesadores de imagen, procesadores de red, chips inalámbricos, etc. Por lo tanto, es importante entender los protocolos comunes en el chip e implementar lo mismo en hardware como FPGA.
Cómo aprender: tome un algoritmo criptográfico simple ej: RC6 e implemente el mismo en FPGA.
Nota: Un paso adelante sería aprender los protocolos AMBA como AHB, APB, AXI, etc.
7. Análisis de tiempo
TA forma los pilares de VLSI. Es importante entender los relojes, la metastabilidad, la STA y el análisis de un circuito para configurar y mantener violaciones y las formas de solucionarlo.
Cómo aprender: aprende la teoría STA primero. He trabajado en STA en el flujo de fondo. Puedes hacer lo mismo. Synopsys PT / ICC es necesario para generar informes de tiempo, analizarlos y luego corregir esas violaciones.
8. Scripting y conceptos básicos de UNIX
Los scripts están escritos para automatizar tareas rutinarias. Se necesita tanto en Frontend como en Backend.
En el flujo de frontend utilizamos predominantemente scripts de Perl para pruebas de regresión, verificación de registros, etc. En backend utilizamos scripts de Tcl para ejecutar varios comandos para PD. Aprende los comandos de UNIX baisc.
Cómo aprender: Hay numerosos tutoriales en línea para aprender. Comienza a escribir scripts simples para ejecutar tareas rutinarias. Deja Windows y comienza a usar UNIX. Debes conocer bien el entorno UNIX.
Hay mucho que cubrir pero estoy cansado de escribir. Así que PM para saber más.