// DESCRIPTION: Verilator: Verilog Test module
//
// This file ONLY is placed under the Creative Commons Public Domain.
// SPDX-FileCopyrightText: 2023 Antmicro Ltd
// SPDX-License-Identifier: CC0-1.0

module t (
    input clk
);

  logic [3:0] enable;
  int cyc = 0;

  Test test (.*);

  always @(posedge clk) begin
    cyc <= cyc + 1;
`ifdef FAIL1
    enable[0] <= 1;
`endif
    enable[1] <= 1;
`ifdef FAIL2
    enable[2] <= 1;
`endif
    enable[3] <= 1;
    if (cyc != 0) begin
      if (cyc == 10) begin
        $write("*-* All Finished *-*\n");
        $finish;
      end
    end
  end
endmodule

module Test (
    input clk,
    input [3:0] enable
);

  assert property (@(posedge clk iff enable[0]) 0)
  else $stop;

  assert property (@(posedge clk iff enable[1]) 1);

  cover property (@(posedge clk iff enable[2]) 1) $stop;

  cover property (@(posedge clk iff enable[3]) 0) $stop;

endmodule
