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?
- ¿Gastar más en estudios superiores conducirá a un empleo adecuado en el futuro?
- ¿Qué tan fácil es volver a la academia después de dejar un trabajo en la industria?
- ¿Cómo motiva un gerente de producto a su equipo de desarrollo?
- ¿Mucha gente realmente consigue trabajo a través de entrevistas informativas y llamadas frías?
- ¿Qué tipo de trabajo puedo obtener después de hacer BCA?
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