6

Tengo un banco de pruebas basado en verilog, conectado a' fuente C usando DPI. Ahora, usando DPI, planeo escribir mi firmware completo. Para ello necesito 3 cosasExportación de tareas a 'C usando DPI

  • Registro Leer
  • escritura de registro
  • manejador de interrupciones
  • Según tengo entendido, el registro de lecturas y escrituras son tareas que necesito para exportar desde el banco de pruebas RTL. Y el controlador de interrupciones (lo implementé importando una función de 'C).

Comprobé la mayoría de la documentación de cadencia y no encontré ninguna pista útil. También me he registrado en la comunidad de usuarios de cadence, pero parece que no puedo hacer preguntas hasta que aprueben mi registro.

Por si alguien está al tanto de esto, agradecería su ayuda.

+1

¿Qué pasa con el apóstrofo antes de la C? ¿Es ese un idioma distinto de C? – unwind

Respuesta

3

De hecho, me di cuenta de algo como esto.

//--From RTL --- 
export "DPI" task reg_read; 

task reg_read; 
    input int nAddr; 
    output int nVal; 

// -- read implementation -- 

endtask 

// -- From C code 
extern void reg_read (int nAddr, int *pVal); 

void test_read (void) 
{ 
    int nRegVal; 

    // Dummy checking !! 
    reg_read (0x100, &nRegVal); 
} 

// -- Again in RTL -- 
import "DPI" context task test_read(); 

Esto funciona para mí usando ncverilog.

2

Genial ... De hecho, escribí un artículo sobre este tema. link

El papel en realidad está exportando lecturas y escrituras de registro en el DPI y luego añadiéndole un intérprete TCL para que pueda usar TCL para controlar su sim. Esto era algo que los chicos de laboratorio adoraban ya que todas sus herramientas ya están en Tcl.

Puede seguir las instrucciones para integrar sus llamadas a funciones de C a SV a través del DPI, y luego detener cuando las cosas TCL entren en juego.

+0

El enlace proporcionado no es válido. –

+1

Huh ... parece que IC Journal ya no existe. Aquí hay un enlace a la descripción general de cómo funciona, pero es bastante alto nivel: https://www.eejournal.com/article/20080826_vmm/ Si puedo encontrar el artículo original publicado en cualquier lugar, volveré y deja un enlace aquí. – SDGator