¿Qué debo aprender para ser ingeniero de verificación en trabajos de diseño de vlsi?

Verificación RTL: ¿de qué se trata? ¿Cómo y por qué hago esto?

Para aprender y dominar las estrategias de verificación y las herramientas / idiomas, necesitamos comprender este problema básico. Dado un diseño de sumador de 16 bits, ¿cómo puedo asegurarme de que funciona bien? Para responder esto en palabras simples, en primer lugar, debe conocer las especificaciones y lo que se supone que debe hacer el sumador. Luego, verifica con algunos casos de prueba conocidos / directos o casos de esquina. Luego, toma algunos números aleatorios y ve si la salida es correcta o no. Hay varias otras preguntas interesantes. ¿Cómo puedo saber que la salida es correcta? Lo compara con una salida estándar generada por algún “modelo dorado confiable” (diga su código C). ¿Cómo me aseguro de cubrir casi cada caso? Verá cobertura, intente obtener entradas / salidas aleatorias sobre los rangos y muchos más …

¿Cómo debo aprender?

Desde la perspectiva del nuevo alumno, me gustaría decir que primero, obtener una comprensión básica de las construcciones de diseño front-end. Comience con Verilog seguido de SystemVerilog. Comprenda cómo funciona el simulador de eventos discretos en los ciclos delta, cómo se utilizan los modelos funcionales de bus y por qué, intente trabajar con máquinas de estado harinosas, etc. Diseñe un conmutador de 4 puertos, un controlador de memoria pequeño, I2C Master-Slave, etc. Intente verificar ellos con un banco de pruebas. Desarrolle la comprensión y obtenga experiencia práctica en tareas de bloqueo / no bloqueo, lógica síncrona asíncrona, etc. Comprenda cómo trabajar con lógica de 2 y 4 estados.

Una vez que comprenda este flujo de datos y el modelo de comportamiento de RTL, vaya a crear un entorno de prueba estándar, que involucra interfaces, controlador, receptor, marcador, modelo de referencia dorado, etc. y úselo para verificar estos DUT. Después de la prueba dirigida, busque una verificación aleatoria restringida y tenga algún tipo de modelo de referencia (en C / SystemC) para verificar la salida de su RTL. Intente hacer un análisis de cobertura funcional y vea cómo se escriben los grupos de cobertura, los puntos de cobertura y cómo se puede realizar la recolección de cobertura y cómo aumentar la cobertura.

Finalmente, haga MIPS no canalizado seguido de RTL MIPS canalizado. Verifíquelo usando el entorno de prueba estándar mencionado anteriormente. Dichos proyectos deberían dar a conocer los problemas reales y la metodología a pequeña escala. Mejore las habilidades de scripting, digamos principalmente perl. Comprender las metodologías de verificación modernas, OVM / UVM. Una vez que domine los conceptos de verificación y Verilog / SystemVerilog, será más fácil. [Adicional: Explore las interfaces / protocolos de bus, mejore el conocimiento sobre PCIe, AMBA, etc.]

¡Buena suerte!

Mejor,
Shail

Intenta detectar errores / suposiciones y entrena tu cerebro para encontrar errores / suposiciones en todas partes posibles.

Este es el primer paso para convertirse en un buen ingeniero de verificación.

Considere la siguiente oración:

Jack y John están caminando por la calle.

Entonces, ¿qué te imaginaste? ¿Jack y John caminando en la misma calle uno al lado del otro? Si imaginaste la forma en que lo describí, ¡entonces asumiste mucha información!

¿Que quiero decir?

¡Nunca dije, en la oración anterior, que Jack y John estaban uno al lado del otro y estaban caminando por la misma calle! (Estaba imaginando dos imágenes diferentes, Jack en una y John en otra, caminando por dos calles diferentes). Si puede hacer las preguntas correctas para extraer exactamente lo que estaba pensando, significa que ha verificado mis pensamientos correctamente. Y de esto se trata la verificación.

Si puede razonar de esta manera en el nivel de señal, el nivel del subsistema y el nivel de SoC extrayendo todos los agujeros de bucle posibles, puede llamarse a sí mismo un buen ingeniero de verificación.

La verificación se basa en gran medida en un proceso de pensamiento argumentativo. Debe hacer preguntas y pensar en una dirección, lo que puede romper el sistema bajo prueba. Si puede romper el sistema, lo ha verificado. Verificación significa atrapar agujeros de bucle en un diseño perfectamente sensible.

Conocer una metodología – UVM, un conjunto de idiomas – System Verilog y Verilog le brinda un medio para ejecutar su pensamiento. Estos se pueden adquirir a lo largo del tiempo con un aprendizaje sostenido.

Lo mismo ocurre con el aprendizaje de un protocolo. El protocolo solo te ayuda a saber que está funcionando. Si desea conocer la verificación, intente romper el protocolo utilizando las reglas del protocolo.

Aprende a pensar argumentativamente.

Hay muchas categorías en la verificación, como la verificación de SoC, la verificación de IP, la verificación de la CPU, la verificación de sincronización, etc. Estas son las habilidades básicas para el ingeniero de verificación.

  1. Lo primero que debe aprender es verilog porque, para ser un buen ingeniero de verificación, debe comprender el diseño RTL (código Verilog).
  2. El conocimiento de los circuitos digitales es imprescindible.
  3. Después de verilog, comience a aprender el sistema verilog, que es una versión extendida de verilog (la mayoría de las empresas están utilizando el entorno basado en el sistema Verilog para la verificación de IP + verificación de SoC)
  4. El conocimiento de C es imprescindible (la mayoría de las principales empresas de semiconductores utilizan la verificación basada en C para la verificación de SoC).
  5. El buen conocimiento del protocolo Amba es el punto positivo.

Para el ingeniero de verificación,

  1. Lenguaje HDL (Verilog / VHDL)
  2. Lenguaje HVL (Sistema Veriog)
  3. Cualquier metodología de verificación (UVM / OVM / VMM)
  4. Buena comprensión en electrónica digital.
  5. Conocimiento de protocolo (DDR / PCI)
  6. Conocimiento sólido del lenguaje de script (PERL / TCL)
  7. Comandos básicos de Linux

Espero que te sea útil …

Gracias por preguntar. No soy un ingeniero de verificación o un diseñador de vlsi front-end, pero en base a lo que he visto, sugeriré lo siguiente:

– UVM
– Sistema Verilog y Verilog
– Scripting (Unix, TCL y PERL)
– Conceptos básicos de electrónica digital
– Protocolos como USB, Ethernet, PCIe o DDR (vaya de los básicos a los más recientes)
– Si desea ir a la verificación de señal mixta analógica (AMS), también necesita aprender sobre eso.

Espero que esto ayude.

Esta pregunta parece exactamente similar a otra para la que respondí a continuación

¿La respuesta de Ramdas Mozhikunnath a Hot para prepararse para la verificación en VLSI Design para obtener más oportunidades de trabajo?

También puede seguir otras publicaciones relacionadas en el blog para aprender y sobresalir en habilidades de verificación en mi blog de Quora – Verification Excellence – Learn, Excel y Advance in Functional Verification

Antes de comenzar con el dominio de Verificación, es muy necesario tener un buen dominio de los conceptos de diseño digital porque es fundamental y se utilizará de una forma u otra.

Ahora, comenzando con los trabajos de perfil de verificación, hay muchos tipos de verificación como formal, SoC, IP, etc. Los siguientes son los conjuntos de habilidades necesarios para cada uno de ellos.

1.Verificación de IP: –

Buen conocimiento de Verilog, SystemVerilog y metodologías como UVM / OVM. En general, en este perfil está realizando una verificación exhaustiva de la funcionalidad de una IP o protocolo en particular y está involucrado en la verificación del entorno y escribiendo TestCases. También es bueno tener buenas habilidades de depuración. en esta área. Necesita conocer los conceptos de cobertura funcional que decidirán la cantidad de verificación que necesita.

2.Verificación del COS:

Generalmente en este perfil, las IP ya están integradas juntas. Por lo tanto, es posible que participe en la escritura de TestCases basados ​​en conectividad. Las IP duras también pueden integrarse juntas. Sin embargo, el conjunto de habilidades, sin embargo, aún está por verse.

En resumen, el conjunto de habilidades requeridas son verilog, SystemVerilog, UVM, OVM, aserciones, cobertura,

Ligera sugerencia sobre la pregunta …

El diseño es bastante diferente y la verificación es diferente. Ambos pueden compartir el mismo lenguaje de programación, pero los conceptos son diferentes. Por lo tanto, los trabajos de diseño de VLSI y el ingeniero de verificación son contrarios entre sí.

Bueno, una respuesta breve para su pregunta aprenda SV (System Verilog), UVM .

Eso es….

Para que se quede afuera de otros candidatos, aprenda un lenguaje de secuencias de comandos (Shell, Perl), familiarícese con los protocolos (AXI, AHB. USB, PCIe, Ethernet, etc.)

Debe aprender verilog HDL, construcciones de sistema verilog, metodología de banco de pruebas UVM y tantos protocolos como sea posible.
Junto con eso, necesita conocer los fundamentos de CMOS y los lenguajes de scripting como perl o C.