Verilog archivo de no bloqueo leído

1

Me gustaría simular un diseño de verilog que es la interfaz (mediante un chip FiFo a USB) con un programa que se ejecuta en mi computadora. He configurado mi programa para redireccionar todas las lecturas y escrituras a los archivos FiFo de Linux (man mkfifo) y ahora estoy tratando de escribir un banco de pruebas para mi código verilog que emula el FiFo al chip USB. La idea es leer los datos del archivo FiFo de Linux y, si hay alguno, reenviarlo a mi DUT.

El estándar Verilog nombra varias tareas del sistema para leer datos de un archivo

  • $ fgetc (Obtener un byte)
  • $ fgets (Obtener una cadena)
  • $ fscanf (Obtener datos con formato)
  • $ fread (Obtener datos binarios)
  • $ readmem * (Llene una memoria completa a la vez)

Sin embargo, estas tareas del sistema se bloquearán hasta que haya datos disponibles o se produzca un error. Peor aún, bloquean todo el banco de pruebas, incluso cuando se bifurcan, por lo que hay algo parecido a

reg [8:0] code = 9'd0;
...
fork : fgetc_with_timeout
    begin
        code=$fgetc(input_file);
        disable fgetc_with_timeout;
    end
    begin
        #300;
        disable fgetc_with_timeout;
    end
join
if(code)
...

no funcionará. Entonces, ¿hay alguna forma de obtener una lectura sin bloqueo de un archivo o hay una manera de obtener el número de bytes / bits / palabras restantes en un archivo?

Estoy usando Xilinx ISE, así que estoy limitado a Verilog (no a System Verilog), así que estoy buscando algo que funcione en ISE, y preferiría no usar el código PLI para esto si es posible.

Saludos cordiales, mox

p.S. > Buscando cualquier cosa que involucre listas 'sin bloqueo' y 'verilog' en su mayoría resultados no relacionados con mi problema, sin embargo, he encontrado esta pregunta sin respuesta en los foros de Xilinx: enlace

    
pregunta mox

1 respuesta

0

Esto no se puede hacer solo en Verilog. Está intentando mezclar un sistema en tiempo real con un sistema en tiempo de simulación. Debe escribir un modelo de Verilog que emule el comportamiento de la salida FIFO con tiempos aleatorios para publicar datos.

    
respondido por el dave_59

Lea otras preguntas en las etiquetas