// DESCRIPTION: Verilator: Verilog Test module // // This file ONLY is placed under the Creative Commons Public Domain. // SPDX-FileCopyrightText: 2003 Wilson Snyder // SPDX-License-Identifier: CC0-1.0 module t ( input clk ); // verilator lint_off COMBDLY // verilator lint_off LATCH // verilator lint_off UNOPT // verilator lint_off UNOPTFLAT // verilator lint_off MULTIDRIVEN reg [31:0] runnerm1, runner; initial runner = 0; reg [31:0] runcount; initial runcount = 0; reg [31:0] clkrun; initial clkrun = 0; reg [31:0] clkcount; initial clkcount = 0; always @( /*AS*/ runner) begin runnerm1 = runner - 32'd1; end reg run0; always @( /*AS*/ runnerm1) begin if ((runner & 32'hf) != 0) begin runcount = runcount + 1; runner = runnerm1; $write(" seq runcount=%0d runner =%0x\n", runcount, runnerm1); end run0 = (runner[8:4] != 0 && runner[3:0] == 0); end always @(posedge run0) begin // Do something that forces another combo run clkcount <= clkcount + 1; runner[8:4] <= runner[8:4] - 1; runner[3:0] <= 3; $write("[%0t] posedge runner=%0x\n", $time, runner); end reg [7:0] cyc; initial cyc = 0; always @(posedge clk) begin $write("[%0t] %x counts %0x %0x\n", $time, cyc, runcount, clkcount); cyc <= cyc + 8'd1; case (cyc) 8'd00: begin runner <= 0; end 8'd01: begin runner <= 32'h35; end default: ; endcase case (cyc) 8'd02: begin if (runcount != 32'he) $stop; if (clkcount != 32'h3) $stop; end 8'd03: begin $write("*-* All Finished *-*\n"); $finish; end default: ; endcase end endmodule