Pregunta

tengo un banco de pruebas basado Verilog, interfaz con 'fuente C usando DPI. Ahora, utilizando DPI estoy planeando escribir toda mi firmware. Para ello necesito 3 cosas

  • Registrar Leer
  • escritura de registro
  • controlador de interrupción Según tengo entendido, el registro de lecturas y escrituras son tareas que necesito para exportar desde el banco de pruebas RTL. Y controlador de interrupciones (I implementado mediante la importación de una función de 'C).

he comprobado la mayoría de la documentación cadencia y no encontraron indicios útiles. También he registrado en la comunidad de usuarios de cadencia, pero parece que no puedo hacer la pregunta hasta que se aprueben mi registro.

Sólo en caso de que alguien es consciente de ello, agradecería su ayuda.

¿Fue útil?

Solución

En realidad lo he descubierto 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.

Otros consejos

Cool ... De hecho, me escribió un artículo sobre este tema. enlace

El papel está hecho exportando registro lee y escribe y cosas por el otro lado de la DPI y luego añadir un intérprete de TCL a él para que pueda utilizar TCL para controlar la tarjeta SIM. Esto era algo que los tipos de laboratorio amado desde todas sus herramientas ya están en Tcl.

Puede simplemente siga las instrucciones para integrar su función llama de C a SV a través del DPI, y luego se detiene cuando el material TCL entra en juego.

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