/* fsm_traffic testbench */ `include "fsm_traffic/fsm_traffic.v" module fsm_traffic_tb; reg clk, rst; wire red_led, green_led, yellow_led; fsm_traffic dut ( .clk(clk), .rst(rst), .red_led(red_led), .green_led(green_led), .yellow_led(yellow_led) ); initial clk = 0; always #5 clk = ~clk; task show_state; $display("t=%0t | rst=%b | R=%b G=%b Y=%b", $time, rst, red_led, green_led, yellow_led); endtask initial begin $dumpfile("fsm_traffic/fsm_traffic.vcd"); $dumpvars(0, fsm_traffic_tb); // Reset rst = 1; @(posedge clk); #1 show_state; rst = 0; // Dejar correr varios ciclos para ver todos los estados repeat(9) begin @(posedge clk); #1 show_state; end // Reset a mitad de secuencia — debe volver a RED rst = 1; @(posedge clk); #1 show_state; rst = 0; repeat(3) begin @(posedge clk); #1 show_state; end $finish; end endmodule