Ayuda a otros a explicar lo que esperabas (hiciste) y lo que realmente viste (error de sintaxis).
El problema con su código es que tiene una construcción always
donde solo se permiten declaraciones de procedimientos. La construcción always
crea una instancia de un proceso para ejecutar código de procedimiento, pero no es una declaración de procedimiento en sí misma. La construcción initial
también crea un proceso, pero no es una declaración de procedimiento. Es posible que desee leer esta discusión .
El otro problema con su código es que está intentando realizar asignaciones de procedimiento al cable a
, lo cual no está permitido. Consulte esta publicación para obtener una explicación completa.
Lo que querías escribir es:
module test(input wire clk,
output reg a);
initial a = 1;
always @(posedge clk)
a <= ~a;
end
endmodule
El siguiente problema es si desea sintetizar este código en hardware, si su herramienta admite un estado inicial para a
, o necesitará una señal de restablecimiento por separado para hacerlo.