¿Qué significa "no se detectó una unidad de diseño en este archivo"?

0

Recibí este error y luego intenté agregar un archivo fuente.

¿Alguien puede decirme qué significa esto? ¿Qué debo hacer para corregirlo?

    
pregunta tollin jose

1 respuesta

1

Tenga en cuenta que este es el mismo caso que ha encontrado aquí.

La respuesta dada en 2008 también ofrece otra solución: usar un identificador extendido, donde se permiten la mayoría de los caracteres gráficos.

VHDL Sin diseño unidades detectadas en el archivo.

  

davidgkoontz
  Visitante
  davidgkoontz
  Mensajes: 4
  Registrado: 02-12-2008 0   Re: VHDL No se detectaron unidades de diseño en el archivo.
  04-07-2008 05:12 PM

Si desea utilizar un carácter gráfico en un nombre simple de entidad, debe ser un identificador extendido. (IEEE-1076-1993 Cláusula 13.3, Elementos léxicos, Identificadores)

 identifier ::=  basic_identifier | extended_identifier

Un identificador básico consiste solo de letras, dígitos y subrayados.

 basic_identifier ::=
     letter  { [ underline ] letter_or_digit }

 letter_or_digit ::=  letter | digit

 letter ::=  upper_case_letter | lower_case_letter

Los identificadores extendidos pueden contener cualquier carácter gráfico.

 extended_identifier ::=
    \ graphic_character { graphic_character } \

Basta con decir que el apóstrofe no es parte de un identificador básico, sino que es un carácter gráfico.

Por lo tanto, cada aparición de "BARBAD'D" debería ser "\ BARBAD'D \". Del mismo modo, podría eliminar el apóstrofe que se utiliza para indicar atributos. La naturaleza críptica de cualquier mensaje de error se debe a la arquitectura del lexer y del analizador. Este error surge de la definición de elementos léxicos, en donde un apóstrofe es un delimitador usado para separar el prefijo del designador de atributo en un nombre de atributo (Cláusula 6.6, Nombres de atributos). El analizador léxico ve las fichas: BARBAD'D IDENTIFIER_TOKEN BARBAD DELIM_APOSTROPHE ' IDENTIFICADOR_TOKEN D

Dejando el analizador de mensajes de error pobres para salir adelante. Sería adecuado que un analizador VHDL se detenga cuando encuentre un error y se queje, señalando una línea y un carácter:

  

ghdl -a barbad.vhdl   barbad.vhdl: 4: 13: falta "es" después del identificador   barbad.vhdl: 4: 13: (encontrado: ')   ghdl: error de compilación (y se detuvo)

En su caso, alguien ha tomado una decisión de arquitectura de software para enviar el informe de errores al software de llamada devolviendo información sobre las unidades de diseño analizadas. Desafortunadamente, no le dice qué está mal con su código fuente VHDL. Tenga en cuenta que el ejemplo de ghdl tampoco proporciona una pista clara sobre cómo solucionarlo, aparte de arreglar las cosas antes de que "sea".

El identificador extendido funciona porque el lexer lo ve como un token:

\ BARBAD'D \ IDENTIFIER_TOKEN \ BARBAD'D \

Solo puedo recordar un editor de VHDL con conocimiento léxico y sintáctico, y falló en el mercado, porque los primeros usuarios de VHDL solían ser sofisticados y conocedores del LRM. También fue un poco lento (1990 - 1991). VHDL también depende de elementos analizados previamente, en particular declaraciones, lo que implica mucha complejidad.

David

  

(Y tengo derechos de autor sobre mi propio trabajo de autoría).

La buena noticia es que aprendo de sus errores (representativos). La mala noticia es que Xilinx no lo hace (aunque no podemos decir la versión de las herramientas de sus imágenes).

También tenga en cuenta que el interrogador en el foro de Xilinx realmente intentó la solución.

    
respondido por el user8352

Lea otras preguntas en las etiquetas