| `default_nettype none |
| |
| module top; |
| |
| reg clock, clear; |
| reg a; |
| wire x; |
| |
| FSM dut( |
| .clock(clock), |
| .clear(clear), |
| .a(a), |
| .x(x) |
| ); |
| |
| initial begin |
| clock = 1; |
| forever #5 clock = ~clock; |
| end |
| |
| initial begin |
| $monitor($time, " a: %b x: %b state: %h", a, x, dut.currentState); |
| clear = 1'b1; |
| a = 1'b0; |
| repeat(3) @(posedge clock); |
| clear = 1'b0; |
| a = 1'b1; |
| repeat(5) @(posedge clock); |
| a = 1'b0; |
| repeat(5) @(posedge clock); |
| a = 1'b1; |
| @(posedge clock); |
| a = 1'b0; |
| @(posedge clock); |
| a = 1'b1; |
| @(posedge clock); |
| a = 1'b1; |
| @(posedge clock); |
| a = 1'b0; |
| @(posedge clock); |
| $finish; |
| end |
| |
| endmodule |