¿Me dejaría saber cómo usar el DPI y el DPI-C?

0

Hola, cuando uso el systemverilog, hay algunos puntos confusos.

el primero es distinguir sobre DPI y DPI-C.

como ejemplo siguiente, se utiliza DPI no DPI-C. pero como sé, el DPI-C está acostumbrado en C.

CODE:SV_file.sv 
program main; 
logic a; 
import "DPI" function void show(logic a); 
initial begin 
a = 1'b0; 
show(a); 
a = 1'b1; 
show(a); 
a = 1'bX; 
show(a); 
a = 1'bZ; 
show(a); 
end 
endprogram 

CODE: C_file.v 
#include <stdio.h> 
#include <svdpi.h> 

void show(svLogic a){ 
if(a == 0) 
printf(" a is 0 \n"); 
else if(a == 1) 
printf(" a is 1 \n"); 
else if(a == 2) 
printf(" a is x \n"); 
else if(a == 3) 
printf(" a is z \n"); 

} 
RESULTS 

a is 0 
a is 1 
a is z 
a is x 

¿Me harías saber cómo usar el DPI y el DPI-C?

    
pregunta sogood

1 respuesta

2

La diferencia tiene que ver con en qué versión del estándar se basa su código C: "DPI" es del estándar más antiguo de Accellera, y "DPI-C" es el estándar actual IEEE.

Luego, la diferencia clave entre dos versiones es cómo se representan las matrices empaquetadas de bit o logic cuando se pasan como argumentos. La versión anterior "DPI" no estandarizaba la representación de arreglos empaquetados: tenía que conocer la representación específica de su herramienta o utilizar las macros proporcionadas por el proveedor de la herramienta para acceder a bits individuales. La versión actual estandariza la forma en que accede a los bits de la matriz empaquetada, y eso hace que su código C binario sea compatible con cualquier herramienta, lo que significa que no tiene que volver a compilar su código DPI para cada proveedor de herramientas con el que trabaje. El anexo H.13 del IEEE 1800-2012 SystemVerilog LRM tiene más información sobre las diferencias.

Mi recomendación para los usuarios de "DPI-C" es que, a menos que necesite acceso a valores de 4 estados, mantenga sus argumentos compatibles con C. Eso significa que solo se usa int s, byte s (char) o una matriz / estructura desempaquetada de ints / bytes en el límite del idioma.

    
respondido por el dave_59

Lea otras preguntas en las etiquetas