¿alguien podría explicar por qué la señal de salida en mi verilog testbench no está cambiando?
Estoy tratando de construir un módulo que realice tareas tanto de posición como de negación.
Para propósitos de prueba, he construido un módulo que recibe un reloj y devuelve una señal.
La señal se establece en 1 en posición de posición, y en 0 en negedge, espero que sea una copia de la señal de reloj.
Todo se está compilando y sintetizando sin errores, se está ejecutando el banco de pruebas, pero la señal de salida no cambia, se mantiene en cero.
Soy nuevo en verilog, así que tal vez me esté perdiendo algo obvio.
Aquí está mi módulo-
module mytest( clk, rst, led );
input clk, rst;
output led;
reg r_out = 1'b0;
always @ (*)
begin
@(posedge clk)
begin
r_out <= 1'b1;
end
@(negedge clk)
begin
r_out <= 1'b0;
end
end
assign led = r_out;
endmodule
Y aquí está el banco de pruebas-
'timescale 1ns/100ps
module mytest_tb;
parameter SYSCLK_PERIOD = 100;// 10MHZ
reg SYSCLK;
reg NSYSRESET;
wire w_led;
//////////////////////////////////////////////////////////////////////
// Clock Driver
//////////////////////////////////////////////////////////////////////
always @(SYSCLK)
#(SYSCLK_PERIOD / 2.0) SYSCLK <= !SYSCLK;
//////////////////////////////////////////////////////////////////////
// Instantiate Unit Under Test: mytest
//////////////////////////////////////////////////////////////////////
mytest mytest_0 (
// Inputs
.clk(SYSCLK),
.rst(NSYSRESET),
// Outputs
.led(w_led)
// Inouts
);
initial
begin
SYSCLK = 1'b0;
NSYSRESET = 1'b0;
end
endmodule
Gracias de antemano!