Sin recurrir a lo que Xilinx informa en su GUI, su código VHDL no es válido. "Half-Subtractor" no es un nombre de entidad válido:
token_test
Half-Subtractor
00001 IDENTIFIER_TOKEN (128) Half
00001 DELIM_MINUS ( 14) -
00001 IDENTIFIER_TOKEN (128) Subtractor
Un identificador en este contexto es un identificador básico:
basic_identifier ::=
letter { [ underline ] letter_or_digit }
Y un delimitador de signo menos no está permitido.
El nombre de su entidad consta de dos identificadores separados por un delimitador. Al ejecutarse en el signo menos, entonces otro identificador antes de que la palabra reservada is
garantice que no analizará, fallará en la declaración de la entidad:
entity_declaration ::=
entity identifier is
entity_header
entity_declarative_part
[ begin
entity_statement_part ]
end [ entity ] [ entity_simple_name ] ;
Donde los nombres de entity_simple deben leerse como entity_ simple_name, un predicado probado a simple_name para la entidad que debe coincidir con el nombre declarado.
Si no se analiza, no aparece. Si no se analizara, debería aparecer en algún lugar como un error, y el hecho de que no esté vinculado también podría informarse.
Cambiar de:
entity half-subtractor is
end entity;
Que recibe un error de análisis en la línea de:
ghdl -a half-substractor.vhdl
half-substractor.vhdl:2:12: missing "is" after identifier
half-substractor.vhdl:2:12: (found: -)
decirle que la sintaxis no es conforme a algo que cumple con el estándar VHDL:
entity half_subtractor is
end entity;
y:
ghdl -a half-substractor.vhdl
(Análisis sin error).
Su vista de lo que está sucediendo aquí parece estar oculta por todo el ruido visual provisto por la GUI. En algún lugar, las herramientas de Xilinx deberían decirle que su VHDL tiene una sintaxis deficiente, además de no aparecer como se detalla en un pequeño panel de la ventana.