Pregunta

Me asignaron la tarea de verificar un código RTL basado en verilog. Ahora, codificar el banco de pruebas RTL usando verilog parece ser muy difícil (para mí). Así que me gustaría probar uno de los siguientes. - Intente proporcionar una interfaz PLI al RTL e invocar funciones 'C para probar - Usando el sistema 'C para interconectar las funciones' C

PD: ya tengo un extenso código 'C que se utilizó para probar el modelo de comportamiento. Soy nuevo en el mundo de la programación de hardware. Cualquier sugerencia sería muy apreciada.

¿Fue útil?

Solución

Si ya tiene un código C extenso que se utilizó para probar el modelo de comportamiento, lo que debe hacer es agregar una interfaz PLI (o DPI) que le permitirá llamar a ese código c desde verilog.

SystemC es básicamente C ++ con muchas clases que le permiten modelar HW. No veo cómo se beneficiaría de aprender SystemC para la tarea que está intentando, ya que ya tiene un modelo C disponible con el que puede probar el HW. Learning SystemC es probablemente exagerado para lo que está tratando de hacer.

FYI. Si desea aprender algo que se usa mucho en la industria hoy en día, le sugiero que aprenda SystemVerilog. Actualmente, SystemVerilog, básicamente verilog con un montón de funciones de lenguaje de software de alto nivel integradas; junto con " VMM " ;, una " metodología de verificación " (es decir, un montón de bibliotecas), parece estar de moda en la verificación de hardware.

Otros consejos

La pregunta no es tan fácil de responder sin conocer su DUV (dispositivo bajo verificación) o el código C que tiene. Necesita medios para estimular y verificar su diseño, aquí probablemente necesite traducir del / al nivel de transacción (estructuras de datos C) al / del nivel de pin. Las interfaces SystemVerilog o SystemC pueden ser un enfoque. Todavía no he usado interfaces DPI / PLI.

Tener un "estado del arte" testbench debe considerar usar una de las metodologías de testbench, a saber, VMM o OVM . También le proporcionarán documentación sobre cómo comenzar.

Parece que debería obtener una herramienta como los simuladores de Mentor o Cadence que combinan código RTL y SystemC en un solo sistema. No es gratis, ciertamente, pero son la solución para eso que existe en la práctica.

La solución estructuralmente correcta que necesita es que el C o el SystemC llamen al RTL, no al revés. Hacer esto implica integrar algún simulador RTL con su programa C o el programa SystemC. Sin duda es factible, pero es una empresa bastante grande.

Además, creo que usar SystemVerilog tiene mucho sentido.

He utilizado tanto para SystemC como para System Verilog / VMM para la verificación, y la respuesta es que depende. Cuando estaba con una startup que tenía un presupuesto muy reducido tratando de sacar su primer ASIC, SystemC era una opción natural porque se ejecutaba en nuestro simulador de bajo presupuesto y SystemVerilog no. Con SystemC, no necesita usar el PLI o el DPI. En realidad, crea una instancia de su modelo SystemC como componente en su banco de pruebas, lo cual es interesante.

Sin embargo, SystemC es una biblioteca C ++ que NO tiene una sintaxis muy intuitiva. Debe tener un fondo decente de C ++ antes de intentar aprender la biblioteca SystemC. Los libros para esto que están disponibles en su mayoría apestan, a excepción de "SystemC desde cero". por David Black.

Eso comienza diciendo, por lo que he visto, SystemC es naturalmente un lenguaje de modelado de alto nivel, no un lenguaje de verificación, y nadie con ningún presupuesto para comprar simuladores reales ya está utilizando SystemC para la verificación. Desde un punto de vista general de desarrollo profesional, usaría System Verilog si está disponible para usted. Además, siempre puede usar el DPI para interactuar con su modelo C para la verificación de salida, que aún utiliza generadores, monitores y marcadores escritos en SV / VMM.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top